我有一个程序,可以存储一个类的多个实例,比如说多达10000个或更多.类实例有几个我不时需要的属性,但它们最重要的一个是ID.
class Document
attr_accessor :id
def ==(document)
document.id == self.id
end
end
现在,存储数千个这样的对象的最快方式是什么?
我曾经把它们都放进一系列文件中:
documents = Array.new
documents << Document.new
# etc
现在,另一种 Select 是将它们存储在散列中:
documents = Hash.new
doc = Document.new
documents[doc.id] = doc
# etc
在我的应用程序中,我主要需要找出文档是否存在.散列的has_key?
函数是否比数组的线性搜索和Document
个对象的比较快得多?都在O(n)以内或has_key?
甚至O(1)以内.我会看到区别吗?
此外,有时我需要在文档已经存在时添加文档.当我使用数组时,我必须先判断include?
,当我使用散列时,我只会再次使用has_key?
.问题同上.
你的 idea 是什么?当90%的时间我只需要知道ID是否存在(而不是对象本身!)时,存储大量数据的最快方法是什么