Ich war über die neuen Funktionen in Java lesen 8 und einer von ihnen war der neue Arrays.parallelSort() -Methode. Ich machte einige Tests, die eine Reihe von Doppel und eine von Strings sortierten und für Strings war die ParallelSort viel langsamer. HierParallel Art langsamer als Serien Art
ist der Inhalt eines Testverfahrens für Streicher:
final int size = 10000;
final String[] values1 = new String[size];
final String[] values2 = new String[size];
for (int i = 0; i < size; i++) {
values1[i] = Integer.toString(i);
values2[i] = values1[i];
}
Collections.shuffle(Arrays.asList(values1));
Collections.shuffle(Arrays.asList(values2));
final Comparator<String> comparator = (o1, o2) -> o2.compareTo(o1);
long startTimeInNano = System.nanoTime();
Arrays.sort(values1, comparator);
long endTimeInNano = System.nanoTime();
System.out.println("Arrays.sort: totalTimeInMicro= " + ((endTimeInNano - startTimeInNano)/1000));
//parallel sort with java 8
startTimeInNano = System.nanoTime();
Arrays.parallelSort(values2,comparator);
endTimeInNano = System.nanoTime();
System.out.println("Arrays.parallelSort: totalTimeInMicro= " + ((endTimeInNano - startTimeInNano)/1000));
Das Ergebnis war:
Arrays.sort: totalTimeInMicro= 11993
Arrays.parallelSort: totalTimeInMicro= 89823
Ich habe auch versucht, diesen Code auf einem anderen Computer und die Ergebnis war das gleiche (25608 vs 808660). Der Computer, auf dem ich die Tests durchführe, hat eine i5-2500 CPU. Hast du eine Idee, warum ich solche Ergebnisse bekomme?
könnte darauf zurückzuführen sein, Schaffung Kopf einzufädeln. Versuchen Sie, noch größere Arrays zu sortieren: Es könnte möglich sein, dass es eine Array-Größe gibt, für die die parallele Sortierung schneller ist. – juhist
Das Timing eines einzelnen Aufrufs (ohne sogar hochzufahren) wird dir nicht viel sagen. – biziclop
1. Bevor Sie eine Mikrobankmarkierung durchführen, sollten Sie einen Aufwärmlauf durchführen. 2. 'Arrays.parallelSort()' 'verwendet gabel join' Rahmen. Es hängt also direkt mit der Anzahl der Kerne auf einem System zusammen (daher ist es * architekturabhängig *). i-5 hat 4 Kerne, also sollte idealerweise 'parallele Sortierung' schneller sein. – TheLostMind