我有一个名为“Search”的简单模型,用于存储搜索。它捕获 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]