« シンポジウムのやらせ問題 | トップページ

2011.08.29

rails で、オブジェクトserializeをMessagePackで行う

ActiveRecord の serialize は便利だけど、YAMLを使ってシリアライズしているので、速度とサイズが気になる。と言うわけで、無理やりMessagePackを使うようにしてみた。

やり方としては、unserializable_attribute?、object_from_yaml、arel_attributes_values をオーバーライドすればOK。

■ベンチマーク
to_msgpack と、MessagePack.unpack を1000回繰り返す
0.000000 0.000000 0.000000 ( 0.002945)

to_yaml と、YAML.load を1000回
0.260000 0.330000 0.590000 ( 0.600541)

PackedEntry.create と、PackedEntry.last を1000回
1.050000 0.200000 1.250000 ( 2.345843)

Entry.create と、Entry.last を1000回
1.160000 0.780000 1.940000 ( 3.084537)

VM上でベンチマークを取ったので差が出なかったけど、DBが速ければ速いほど、上2つの速度差に近くなるはず。

■使い方


rails g model PackedEntry body:binary


2011 08 29 [ruby on rails] | 固定リンク このエントリーを含むはてなブックマーク

人気blogランキングへ

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/26611/52593145

この記事へのトラックバック一覧です: rails で、オブジェクトserializeをMessagePackで行う:

コメント

yourpediaで、以前は正しく表示されていたテンプレートが壊れて表示されるようになりました。
wikiのテンプレをコピーするだけじゃ、ダメですかね?

投稿者: (2011/10/02 14:50:20)

yourpediaの管理者の方は随分と安っぽい正義心に燃えている方のようですね。

http://twitter.com/#!/Only_Mumbly

投稿者: (2011/11/09 11:56:18)

現在yourpediaは誰がログインしても、同一IP(10.206.97.51)で認識され、またそのIPはブロックされているものであるため、誰も書き込みが出来なくなっています。

投稿者: (2012/01/13 17:38:11)

コメントを書く