[JAVA] Stream und paralleler Stream

der Unterschied

Ist es nicht parallel? Achten Sie auf die Bestellung.

Diesmal ist es nicht die Messung der Verarbeitungsreihenfolge, sondern die Messung der Leistung.

Messung

Messung.java


package test1;

import java.util.List;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Test3 {
	
	public static void main(String[] args) {
		Long start1 = System.nanoTime();
		normal();
		Long end1 = System.nanoTime();
		System.out.println("stream\r\n" + (end1 - start1) + "ns\r\n");
		Long start2 = System.nanoTime();
		parallel();
		Long end2 = System.nanoTime();
		System.out.println("parallelStream\r\n" + (end2 - start2) + "ns");
	}
	
	private static void normal() {
		generate().stream().filter(filter).map(v -> v + 1).forEachOrdered(qwe);
	}
	
	private static void parallel() {
		generate().parallelStream().filter(filter).map(v -> v + 1).forEachOrdered(qwe);
	}
	
	private static List<String> generate() {
		return IntStream.range(0, 9999).boxed().map(String::valueOf).collect(Collectors.toList());
	}
	
	private static final Predicate<String> filter = v -> v.length() == 3;
	private static final Consumer<String> qwe = v -> {};
}

Ergebnis

stream
13381900ns

parallelStream
8380600ns

Es ist ganz anders

Jedoch ...

Weil es Multithreading ist Es ist nicht mehr threadsicher.

Wenn Sie etwas Schlechtes tun, erhalten Sie null oder InterruptedException. Lassen Sie uns die Synchronisation fest steuern

Recommended Posts

Stream und paralleler Stream
Punkt 48: Seien Sie vorsichtig, wenn Sie Streams parallel schalten
Parallele und parallele Verarbeitung in verschiedenen Sprachen (Java Edition)
Effektive Java 3rd Edition Kapitel 7 Lambda und Stream
Punkt 80: Ziehen Sie Executoren, Aufgaben und Streams Threads vor