検索の保存に使用される「検索」という単純なモデルがあります。URL パラメータをキャプチャし、ハッシュとしてシリアル化された属性 :search_criteria に格納します。
serialize :search_criteria, Hash
これはすべて完全に機能しますが、パフォーマンスは恐ろしくなります。オブジェクトが 5 つだけの場合、次のステートメントは約 0.2 秒かかります。
start = Time.now
SavedSearch.all.map(&:search_criteria)
puts Time.now - start
ただし、serialize 行を削除すると (search_criteria が文字列を返すように)、ステートメントにかかる時間はわずか 0.002 秒です。これは、ハッシュを逆シリアル化するための 2 桁の違いです!!
ここで何が起こっているのですか?
Rails.version = 3.2.8 Ruby 1.9.3p194 (2012-04-20 リビジョン 35410) [x86_64-linux]