我有一个程序可以存储一个类的许多实例,比方说高达10.000或更多.类实例有不时需要的几个属性,但最重要的属性是ID.
class Document
attr_accessor :id
def ==(document)
document.id == self.id
end
end
Run Code Online (Sandbox Code Playgroud)
现在,存储数千个这些对象的最快方法是什么?
我曾经将它们全部放入一个文档数组中:
documents = Array.new
documents << Document.new
# etc
Run Code Online (Sandbox Code Playgroud)
现在另一种方法是将它们存储在Hash中:
documents = Hash.new
doc = Document.new
documents[doc.id] = doc
# etc
Run Code Online (Sandbox Code Playgroud)
在我的应用程序中,我主要需要找出文档是否存在.哈希的has_key?函数是否明显快于数组的线性搜索和Document对象的比较?都在O(n)内或has_key?甚至是O(1).我会看到区别吗?
此外,有时我需要在文档已经存在时添加它.当我使用数组时,我必须先检查include?,当我使用哈希时,我只是has_key?再次使用.与上述问题相同.
你的想法是什么?什么是存储大量数据的最快方法,90%的时间我只需要知道ID是否存在(而不是对象本身!)