static Weil static ein Image von gemeinsam genutzten Eigenschaften hat Wenn Sie immer in der Ecke des Speichers sitzen, habe ich anhand des Bildes versucht, dass die Verwendung von Statik schneller ist.
Klasse zur Messung der Verarbeitungsgeschwindigkeit.java
package mk42;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
public class StreamProcessingTest {
private static final List<String> list = Arrays.asList("a", "s", "k");
public static void main(String[] args) {
Long start = System.nanoTime();
test();
Long end = System.nanoTime();
Mk42.echo.accept("Processing TIme : " + (end - start) + "ns");
/** ----------not static---------- */
Mk42.echo.accept("next test");
NotStaticProcessingTest no = new NotStaticProcessingTest();
Long start2 = System.nanoTime();
no.test2();
Long end2 = System.nanoTime();
Mk42.echo.accept("Processing TIme : " + (end2 - start2) + "ns");
}
private static void test() {
// twice
list.stream().forEach(v -> execute());
list.stream().filter(v -> !v.equals("a")).forEach(v -> qwe());
//Die Verarbeitungszeit ändert sich nicht viel, selbst wenn eine Mehrfachverarbeitung innerhalb der Beendigungsoperation durchgeführt oder aufgeteilt wird..
}
private static void execute() {
List<Integer> a = new ArrayList<Integer>();
IntStream.range(0, 10).forEach(v -> a.add(2));
}
private static void qwe() {
List<Integer> a = new ArrayList<Integer>();
IntStream.range(0, 10000000).forEach(v -> a.add(2));
}
}
Eine Klasse, die Methoden für nicht statische Experimente zusammenfasst.java
package mk42;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
public class NotStaticProcessingTest {
private static final List<String> list = Arrays.asList("a", "s", "k");
public void run() {
System.out.println("qwe");
}
public void test() {
// onece
list.stream().forEach(v -> {
execute();
if(!v.equals("a"))
qwe();
});
//Die Verarbeitungszeit ändert sich nicht viel, selbst wenn eine Mehrfachverarbeitung innerhalb der Beendigungsoperation durchgeführt oder aufgeteilt wird..
}
public void test2() {
// twice
list.stream().forEach(v -> execute());
list.stream().filter(v -> !v.equals("a")).forEach(v -> qwe());
//Die Verarbeitungszeit ändert sich nicht viel, selbst wenn eine Mehrfachverarbeitung innerhalb der Beendigungsoperation durchgeführt oder aufgeteilt wird..
}
private void execute() {
List<Integer> a = new ArrayList<Integer>();
IntStream.range(0, 10).forEach(v -> a.add(2));
}
private void qwe() {
List<Integer> a = new ArrayList<Integer>();
IntStream.range(0, 10000000).forEach(v -> a.add(2));
}
}
static -> Processing TIme : 222787700ns
Nicht statisch-> Processing TIme : 176494000ns
Was? Ich dachte, aber wenn Sie mehrmals experimentieren
static.
Processing TIme : 225677500ns
Processing TIme : 223625900ns
Processing TIme : 223150400ns
Processing TIme : 228877000ns
Processing TIme : 223187400ns
Nicht statisch.
Processing TIme : 178923100ns
Processing TIme : 167760600ns
Processing TIme : 190593300ns
Processing TIme : 180728700ns
Processing TIme : 216358400ns
Ich möchte es nicht tun, weil es ein wenig durchschnittlich ist, aber es ist nicht Ich habe das Gefühl, dass es wenig Unschärfe gibt
Die Stärke der statischen Aufladung besteht nicht darin, dass sie schnell ist, sondern dass die Verarbeitungsgeschwindigkeit kaum schwankt ...?
Recommended Posts