J'ai un programme qui permettra de stocker de nombreuses instances d'une classe, disons jusqu'à 10.000 ou plus. Les instances de classes ont plusieurs propriétés que j'ai besoin de temps à autre, mais leur plus important est l'ID.
class Document
attr_accessor :id
def ==(document)
document.id == self.id
end
end
Maintenant, quel est le moyen le plus rapide de stocker des milliers de ces objets?
J'ai utilisé de toutes les mettre dans un tableau de Documents:
documents = Array.new
documents << Document.new
# etc
Maintenant une autre solution serait de les stocker dans une table de Hachage:
documents = Hash.new
doc = Document.new
documents[doc.id] = doc
# etc
Dans mon application, j'ai surtout besoin de savoir si un document existe. Est la valeur de Hachage de l' has_key?
fonction significativement plus rapide qu'une recherche linéaire de la Matrice et la comparaison des Document
objets? Sont à la fois dans O(n) ou est - has_key?
même O(1). Vais-je voir la différence?
Aussi, parfois, j'ai besoin d'ajouter des Documents quand il est déjà existants. Lorsque j'utilise un Tableau, je voudrais vérifier avec include?
avant, quand j'utilise une table de Hachage, j'aimerais utiliser has_key?
de nouveau. Même question que ci-dessus.
Quelles sont vos pensées? Quelle est la méthode la plus rapide de stocker de grandes quantités de données lorsque 90% du temps, j'ai seulement besoin de savoir si l'ID existe (et non l'objet lui-même!)