[JAVA] Was ist schneller, Größe oder 0, als Argument von List # toArray?

Erste Schlussfolgerung

Hintergrund

→ Lass uns experimentieren!

Annahme

Experimenteller Code


import java.util.ArrayList;
import java.util.List;

public class Test {

	public static void main(String[] args) {

		List<String> list = new ArrayList<>();
		for (int i = 0; i < 1000; i++) {
			list.add(Integer.toString(i));
		}

		int[] loopCounts = new int[] { 1000, 10000, 100000, 1000000, 10000000 };
		for (int loop : loopCounts) {
			long sum = 0;
			for (int j = 0; j < 10; j++) {
				long start = System.currentTimeMillis();

				String[] temp = null;
				for (int i = 0; i < loop; i++) {
					temp = list.toArray(new String[0]);
				}

				long stop = System.currentTimeMillis();
				sum += stop - start;
			}
			System.out.println("toArray(new String[0]) " + loop + "Zeitgeschwindigkeit*Die durchschnittliche Geschwindigkeit von 10 mal ist" + sum / 10 + "Es ist eine Millisekunde.");

			sum = 0;
			for (int j = 0; j < 10; j++) {
				long start = System.currentTimeMillis();

				String[] temp = null;
				for (int i = 0; i < loop; i++) {
					temp = list.toArray(new String[list.size()]);
				}

				long stop = System.currentTimeMillis();
				sum += stop - start;
			}
			System.out.println("toArray(new String[list.size()]) " + loop + "Zeitgeschwindigkeit*Die durchschnittliche Geschwindigkeit von 10 mal ist" + sum / 10 + "Es ist eine Millisekunde.");
		}
	}
}

Ergebnis

[1000 mal]

toArray (neuer String [0]) 1000-fache Geschwindigkeit * 10-fache Die durchschnittliche Geschwindigkeit beträgt 2 Millisekunden.

toArray (neuer String [list.size ()]) 1000-fache Geschwindigkeit * 10-fache Die durchschnittliche Geschwindigkeit beträgt 2 Millisekunden.

[10.000 Mal]

toArray (neuer String [0]) 10000-fache Geschwindigkeit * 10-fache Geschwindigkeit Die Durchschnittsgeschwindigkeit beträgt 19 Millisekunden.

toArray (neuer String [list.size ()]) 10000-fache Geschwindigkeit * 10-fache Geschwindigkeit Die durchschnittliche Geschwindigkeit beträgt 25 Millisekunden.

[100.000 Mal]

toArray (neuer String [0]) 100000-fache Geschwindigkeit * 10-fache Geschwindigkeit Die durchschnittliche Geschwindigkeit beträgt 207 Millisekunden.

toArray (neuer String [list.size ()]) 100000-fache Geschwindigkeit * 10-fache Geschwindigkeit Die Durchschnittsgeschwindigkeit beträgt 288 Millisekunden.

[1.000.000 Mal]

toArray (neuer String [0]) 1000000-fache Geschwindigkeit * 10-fache Geschwindigkeit Die Durchschnittsgeschwindigkeit beträgt 1497 Millisekunden.

toArray (neuer String [list.size ()]) 1000000-fache Geschwindigkeit * 10-fache Die Durchschnittsgeschwindigkeit beträgt 1562 Millisekunden.

[10.000.000 Mal]

toArray (neuer String [0]) 10000000-fache Geschwindigkeit * 10-fache Geschwindigkeit Die durchschnittliche Geschwindigkeit beträgt 12949 Millisekunden.

toArray (neuer String [list.size ()]) 10000000-fache Geschwindigkeit * 10-fache Die durchschnittliche Geschwindigkeit beträgt 15622 Millisekunden.

Nochmals Fazit

** toArray (neues T [0]) ist schneller! ** **.

Nachwort

Es ist umständlich, weil es in einem Artikel geschrieben wurde, der im Internet veröffentlicht wurde (Selbstdisziplin)

URL, die hilfreich zu sein scheint

Externer Link: Arrays of Wisdom of the Ancients

Recommended Posts

Was ist schneller, Größe oder 0, als Argument von List # toArray?
Java: Das Problem ist schneller, Stream oder Loop
Die Frage, welche besser ist, ob oder wechseln
Welches ist schneller, Methodenreferenz oder Lambda-Ausdruck
Was ist schneller, Array # Sample oder Random # Rand?
[Xcode / Swift5] Hinweis "Ausdruck nach 'Rückkehr' wird als Argument der 'Rückkehr' behandelt", das nach der Rückkehr unbeabsichtigt ausgeführt wird.
Was ist besser, Kotlin oder zukünftiges Java?
Gilt die Methode der primitiven spezialisierten IntFunction oder applyAsInt?
Ändern Sie das Gespräch je nachdem, welcher Tag heute ist
[Java] Löschen Sie die Elemente von List
[Rails] In Bezug auf das Vorhandensein oder Fehlen von Klammern im Argument der Rendermethode
[6 Auswahlmöglichkeiten für den Vergleich von Formularwerkzeugen] Was ist besser, Open Source oder kommerziell?