563 Stimmen

Leistung von HashSet vs. Liste

Es ist klar, dass eine Suchleistung des generischen HashSet<T> Klasse höher ist als die der generischen List<T> Klasse. Vergleichen Sie einfach den hashbasierten Schlüssel mit dem linearen Ansatz in der List<T> Klasse.

Die Berechnung eines Hash-Schlüssels kann jedoch selbst einige CPU-Zyklen in Anspruch nehmen, so dass die lineare Suche bei einer geringen Anzahl von Elementen eine echte Alternative zur HashSet<T> .

Meine Frage: Wo liegt der Break-even?

Zur Vereinfachung des Szenarios (und um fair zu sein) nehmen wir an, dass die List<T> Klasse verwendet das Element Equals() Methode, um einen Artikel zu identifizieren.

1voto

Kyle Punkte 105

Das hängt von vielen Faktoren ab... Listenimplementierung, CPU-Architektur, JVM, Schleifensemantik, Komplexität der Gleichheitsmethode usw... Sobald die Liste groß genug für einen effektiven Benchmark ist (1000+ Elemente), schlagen Hash-basierte binäre Suchvorgänge die lineare Suche um Längen, und der Unterschied wird von da an nur noch größer.

Ich hoffe, das hilft!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X