[JAVA] Verarbeitungsgeschwindigkeit mit und ohne statische Aufladung

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.

Lass es uns versuchen

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));
	}
}

Ergebnis

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

Verarbeitungsgeschwindigkeit mit und ohne statische Aufladung
Weihnachten mit Verarbeitung
[Begriffe] Statisch und dynamisch
Linkverarbeitung und SQLite
Der Unterschied zwischen der Programmierung mit Ruby-Klassen und der Programmierung ohne Ruby-Klassen
Verspotten Sie statische Methoden mit PowerMock
[Java] Stapelbereich und statischer Bereich
Feder mit Kotorin --6 Asynchrone Verarbeitung
Gemeinsame Verarbeitung und Fehlerverarbeitung springmvc
Alter und neuer Speed Showdown
Präsentationsfolie mit Verarbeitung erstellt
Suchen und Ausführen einer Methode aus einer Instanz mit Verarbeitung (Java)
Ich möchte eine asynchrone Verarbeitung und periodische Ausführung mit Rail durchführen !!!