Einführung:
In Java 8 bieten Streams eine leistungsstarke Art und Weise, Datensammlungen zu verarbeiten. Beim Filtern von Elementen basierend auf mehreren Kriterien stehen Entwickler vor der Wahl zwischen der Verwendung mehrerer Filter oder eines einzelnen Filters mit einer komplexen Bedingung.
Mehrere Filter:
Der erste Ansatz beinhaltet die Verwendung mehrerer Filter Operationen, wie zum Beispiel:
<code class="java">myList.stream().filter(x -> x.size() > 10).filter(x -> x.isCool()) ...</code>
Komplexer Bedingungsfilter:
Alternativ kann ein einzelner Filter mit einer komplexen Bedingung verwendet werden:
<code class="java">myList.stream().filter(x -> x.size() > 10 && x -> x.isCool()) ...</code>
Überlegungen zur Leistung:
Intuitiv erscheint der komplexe Bedingungsfilter aufgrund der geringeren Anzahl von Filtervorgängen möglicherweise effizienter. Der tatsächliche Leistungsunterschied ist jedoch nicht eindeutig.
Analyse:
Laut der bereitgestellten Antwort ist der für beide Ansätze ausgeführte Code sehr ähnlich. Die zugrunde liegende Objektstruktur kann unterschiedlich sein, aber der Hotspot-Optimierer mildert diesen Unterschied effektiv.
Optimierung von Methodenreferenzen:
Die Verwendung von Methodenreferenzen anstelle von Lambda-Ausdrücken kann den Overhead synthetischer Delegationsmethoden eliminieren erstellt für Lambda-Ausdrücke. Durch diese Optimierung kann der Ansatz mit mehreren Filtern in Bezug auf den Delegationscode mit dem komplexen Bedingungsfilter vergleichbar werden.
Überlegungen zur Parallelisierung:
Theoretisch können mehrere Filter möglicherweise einfacher zu parallelisieren als ein einzelner Filter. Dieser Vorteil ist jedoch nur für rechenintensive Aufgaben relevant und erfordert eine Implementierung, die die parallele Verarbeitung nachfolgender Stufen unterstützt.
Fazit:
Der Leistungsunterschied zwischen mehreren Filtern und einer komplexen Bedingung Filter ist vernachlässigbar. Lesbarkeit und Wartbarkeit sollten Vorrang vor wahrgenommenen Leistungssteigerungen haben.
Das obige ist der detaillierte Inhalt vonMehrere Filter vs. komplexe Bedingungen in Java 8-Streams: Welche sind besser?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!