Ist objectForKey langsam für große NSDictionary?
- Angenommen, wir haben sehr große NSDictionary, wenn wir möchten, rufen Sie die objectForKey Methode, wird es machen viele Vorgänge in der core-Wert zu erhalten? Oder wird es Punkt-zu-Wert in den Speicher direkt?
- Wie funktioniert es im Kern?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den CFDictionary Abschnitt der Sammlungen Programmierung Themen für Core Foundation (die Sie in Aussehen sollte, wenn Sie mehr wissen wollen) Staaten:
Dies ist, was wikipedia zu sagen hat, über hash-Tabellen:
Die Leistung hängt daher von der Qualität der hash. Wenn es gut ist, dann ist der Zugriff auf Elemente einer O(1) operation (d.h. nicht abhängig von der Anzahl der Elemente).
EDIT:
In der Tat nach dem Lesen weiter die Sammlungen Programmierung Themen für Core Foundation, apple gibt eine Antwort auf Ihre Frage:
CFDictionary
umgesetzt wird intern durch einCFBasicHash
.NSDictionary
ist im wesentlichen eine Hash-Tabelle Struktur, also Big-O für den lookup ist O(1). Um zu vermeiden, dass Umschichtungen (und zu erreichen, die O(1)) Komplexität, die Sie verwenden solltendictionaryWithCapacity:
erstellen Sie ein neues Wörterbuch mit der entsprechenden Größe in Bezug auf die Größe Ihres Datenbestandes.