« 2011年7月 | トップページ | 2012年8月 »
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つの速度差に近くなるはず。
■使い方
2011 08 29 [ruby on rails] | 固定リンク | コメント (8) | トラックバック