Gibt es eine gute Referenz oder kann mir jemand mehr über die Leistung verschiedener Java-Implementierungen auf kleinen -Sätzen (etwa 1-100 Elementen) erzählen? Die Geschichte von O (1) vs O (log n) ist für diese Größen ziemlich irrelevant, aber da ich mit Millionen dieser kleinen Sätze umgehen muss, spielt die Leistung sicherlich eine Rolle. Die meisten Referenzen, die ich finde, erwähnen nicht viel darüber.
Ich würde folgendes mit diesen Sets machen müssen (nur ein paar Mal pro Set):
hashCode()
der gesamten Menge Ich denke, dies sind die praktikablen Optionen zum Vergleichen (angenommen, dass Vergleich / Hashing T fast frei ist):
hashCode()
) Collections.sort()
benötigt ... Welches der oben genannten wird im Allgemeinen bevorzugt? Oder sollte ich meine eigene SmallSet<T>
Klasse schreiben?
Wenn Sie wirklich nach Leistung suchen, dann gibt es nichts weniger als das Testen für sich selbst, das Ihnen hier helfen wird:
Sie müssen einen Testfall einrichten, der Ihrer tatsächlichen Verwendung ähnlich ist - testen Sie lange genug, dass GC einsetzt und Sie die Effekte dort sehen.
Wenn Sie kritische Unterschiede feststellen, führen Sie die Tests nach jeder Aktualisierung der JVM erneut aus, da sich die Implementierungen möglicherweise ändern.
Bis Sie solche Leistungstests durchgeführt haben, gebe ich meinen Standardratschlag: Wählen Sie die beste lesbare Option und ändern Sie sie nur dann, wenn Sie deutliche Vorteile aus der Verwendung einer weniger lesbaren Option ziehen. Die Code-Betreuer (möglicherweise ein zukünftiger Sie) werden Ihnen dafür danken.
Dies ist eine kleine Set-Implementierung als Arrays:
Es ist so einfach, sich an Ihre Bedürfnisse anzupassen:)
Quelle: Ссылка
%Vor%