Probieren Sie Java 8 Stream aus

Ich denke, ich mache es irgendwo, aber ich werde die Leistung testen, wenn ich Stream mit Java 8 verwende.

Umgebung

■Java

java


$ java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

■Eclisep

Version: Neon.1a Release (4.6.1)

Testmethode

Streit

--Liste der Zeichenfolge

Dinge die zu tun sind

Code, der keinen Stream verwendet

	public void sortList(List<String> list) {
		StringBuilder sb = new StringBuilder();
		Collections.sort(list);
		for (String str : list) {
			if (!str.startsWith("Sport")) {
				sb.append(str);
			}
		}
	}

Code mit Stream

	public void sortList(List<String> list) {
		StringBuilder sb = new StringBuilder();
		list.stream()
				.filter(str -> !str.startsWith("Sport"))
				.sorted()
				.forEach(str -> sb.append(str));
	}

Code, der die Methode ausführt

Führt den Prozess des Schleifens der Testmethode 1 Million Mal 10 Mal aus.

	public static void main(String[] args) {
		//Liste zur Verwendung in Argumenten für Testmethoden
		List<String> list = Arrays.asList(
				"Yute"
				,"Miyaou"
				,"Kimuko"
				,"1234567"
				,"abcdefg"
				,"Pepe Pepe"
				);
		
		//Schreiben wir eine Testausführungsschleife mit Stream
		IntStream.rangeClosed(1, 10).forEach(i -> {
			long start = System.currentTimeMillis();
			StreamTest test = new StreamTest();
			IntStream.rangeClosed(1, 1000000).forEach(j -> {
				test.sortList(list);
			});
			System.out.println("[time]" + (System.currentTimeMillis() - start) + "(msec)");
		});
	}

Ergebnis

Code, der keinen Stream verwendet

[time]174(msec)
[time]144(msec)
[time]161(msec)
[time]117(msec)
[time]136(msec)
[time]204(msec)
[time]132(msec)
[time]133(msec)
[time]126(msec)
[time]127(msec)

Code mit Stream

[time]526(msec)
[time]442(msec)
[time]684(msec)
[time]373(msec)
[time]378(msec)
[time]335(msec)
[time]363(msec)
[time]364(msec)
[time]390(msec)
[time]353(msec)

Fazit

In dem Code, den ich dieses Mal ausprobiert habe, hat es bei Verwendung von Stream doppelt bis mehr als doppelt so lange gedauert. Da es sich jedoch um eine große Anzahl von Schleifen mit einfacher Verarbeitung handelt, scheint dieses Ergebnis erhalten worden zu sein. (Ich bin der Meinung, dass das gleiche Ergebnis nicht erzielt wird, wenn es in die Praxis umgesetzt wird.) Da dies die erste Implementierung von Stream ist, ist die Implementierung mit Stream möglicherweise nicht möglich. In Bezug auf die Lesbarkeit denke ich, dass diejenigen, die bisher an den Code gewöhnt sind, es offensichtlich leichter finden werden, die for-Anweisung zu verwenden. Als ich mich daran gewöhnt hatte, war die Syntax mit Stream offensichtlich und ich fand es leicht zu verstehen.

Der folgende Code hat es übrigens etwas schneller gemacht.

	public void sortListAsStream(List<String> list) {
		StringBuilder sb = new StringBuilder();
		list.stream()
				.sorted()
				.forEach(str -> {
					if (!str.startsWith("Sport")) {
						sb.append(str);
					}
				});
	}
[time]456(msec)
[time]409(msec)
[time]328(msec)
[time]552(msec)
[time]316(msec)
[time]257(msec)
[time]272(msec)
[time]289(msec)
[time]305(msec)
[time]306(msec)

Recommended Posts

Probieren Sie Java 8 Stream aus
Java Stream API
Java 8 studieren (Stream)
Versuchen Sie es mit Java 9
Java Stream-Beendigung
[Java] Stream-Verarbeitung
Java 9 Optional :: stream
Versuchen Sie es mit der Stream-API in Java
Probieren Sie verschiedene Java Stream API-Methoden aus (jetzt)
[Java] Stream Collectors Hinweis
[Java] Stream API-Stream-Generierung
[Java] Stream API / Map
Informationen zur Java8-Stream-Reduzierung
Versuchen Sie es mit dem Java-Rückgabewert
Grobe Zusammenfassung des Java8-Streams
Versuchen Sie es mit RocksDB mit Java
Versuchen Sie eine DB-Verbindung mit Java
[Java11] Stream-Zusammenfassung - Vorteile von Stream -
Versuchen Sie, mit Java zu kratzen [Hinweis]
Versuchen Sie, JavaScript in Java aufzurufen
Lassen Sie uns Spresense mit Java entwickeln (1)
Probieren Sie den Funktionstyp in Java aus! ①
Java Stream API Spickzettel
Versuchen Sie gRPC mit Java, Maven
Java Stream API in 5 Minuten
Java8-Stream, Zusammenfassung des Lambda-Ausdrucks
Java
[Java] Stream API - Stream-Beendigungsverarbeitung
[Java] Stream API - Stream Zwischenverarbeitung
Java Stream kann nicht wiederverwendet werden.
[Java] Einführung in die Stream-API
Java
[Java11] Stream Usage Summary -Basics-
Java-Anwendung für Anfänger: Stream
[Java] Stream API Zwischenoperation
[Java 8] Doppelte Löschung (& doppelte Überprüfung) mit Stream
Versuchen Sie, Android Hilt in Java zu implementieren
[Java] Stream (Filter, Map, ForEach, Reduce)
[java8] Um die Stream-API zu verstehen
Über Lambda, Stream, LocalDate von Java8
[Einführung in Java] Informationen zur Stream-API
[Java] Elementexistenzprüfung mit Stream
Versuchen Sie, Selenuim 3.141.59 mit Eclipse (Java) auszuführen.
Versuchen Sie es mit Redis mit Java (jar)
Versuchen Sie einen If-Ausdruck in Java
Ich habe versucht, die Java8 Stream API zu verwenden
[Java] Versuchen Sie, mithilfe von Generika zu implementieren
Versuchen Sie, die öffentliche Java-Methode zu extrahieren
Versuchen Sie die bidirektionale Kommunikation mit gRPC Java
Grundlegender Verarbeitungsablauf von Java Stream
Versuchen Sie, AWS X-Ray in Java auszuführen
Versuchen Sie, Yuma in Java zu implementieren
Versuchen Sie es mit der IBM Java-Methodenverfolgung
Java 8 ~ Stream API ~ startet jetzt
Probieren Sie Eclipse 4.7 Oxygen New 30+ / Java 10 var!
Java-Array / Liste / Stream gegenseitige Konvertierungsliste
Java8-Listenkonvertierung mit Stream Map