悪徳商法?マニアックス ココログ支店

悪徳商法総合情報紹介ページ ~騙すなら、素敵にだまして~  本家「悪徳商法?マニアックス」は、こちら

« 2011年7月 | トップページ | 2012年8月 »

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] | 固定リンク | コメント (8) | トラックバック