Java – 対Iteratorパフォーマンステスト対
より良い方法は、ベンチマークテストを行うためにhttps://openjdk.java.net/projects/code-tools/jmh/[OpenJDK JMH]フレームワークを使用することです。これはJVMのウォームアップの懸念を自動的に処理するためです。例 – リンク://java/java-jmh-benchmark-tutorial/[Java JMHベンチマークチュートリアル]
次のループメソッドのパフォーマンスをテストするための簡単なJavaコード。
-
Whileループ
-
For Loop
-
反復ループ
Javaでは、endTimeとstartTimeを比較して関数の経過時間を取得するだけです。
long startTime = new Date().getTime();
//call something else
long endTime = new Date().getTime();
long difference = endTime - startTime;
System.out.println("Elapsed time in milliseconds: " + difference);
While対For Iterator
1、5、10、1500万のレコードを含む `List`をループするためのJavaコード。
LoopSimpleTest.java
package com.mkyong.benchmark.bk;
import java.util.Arrays;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
public class LoopSimpleTest {
private static List<String> DATA__FOR__TESTING = Arrays.asList(createArray());
public static void main(String[]argv) {
LoopSimpleTest obj = new LoopSimpleTest();
obj.loopIterator();
obj.loopFor();
obj.loopWhile();
}
public void loopFor() {
System.out.println("\n--------- For Loop -------\n");
long startTime = new Date().getTime();
for (int i = 0; i < DATA__FOR__TESTING.size(); i++) {
String s = DATA__FOR__TESTING.get(i);
}
long endTime = new Date().getTime();
long difference = endTime - startTime;
System.out.println("For - Elapsed time in milliseconds: " + difference);
}
public void loopWhile() {
System.out.println("\n--------- While Loop -------\n");
long startTime = new Date().getTime();
int i = 0;
while (i < DATA__FOR__TESTING.size()) {
String s = DATA__FOR__TESTING.get(i);
i++;
}
long endTime = new Date().getTime();
long difference = endTime - startTime;
System.out.println("While - Elapsed time in milliseconds: " + difference);
}
public void loopIterator() {
System.out.println("\n--------- Iterator Loop -------\n");
long startTime = new Date().getTime();
Iterator<String> iterator = DATA__FOR__TESTING.iterator();
while (iterator.hasNext()) {
String next = iterator.next();
}
long endTime = new Date().getTime();
long difference = endTime - startTime;
System.out.println("Iterator - Elapsed time in milliseconds: " + difference);
}
private static String[]createArray() {
String sArray[]= new String[15__000__000];
for (int i = 0; i < 15__000__000; i++) {
sArray[i]= "Array " + i;
}
return sArray;
}
}
出力
D:\test>java -Xms1024m -Xmx1024m ArrayToList --------- Iterator Loop ------- イテレータ - 経過時間(ミリ秒):390 --------- For Loop -------- For - Elapsed time in milliseconds: 234 --------- While Loop ------- While - 経過時間(ミリ秒):234

反復ループが最も遅く、forループとの違い
whileループはそれほど重要ではありません。
===参考文献
。リンク://java/java-jmh-benchmark-tutorial/[Java JMHベンチマークチュートリアル]
リンク://タグ/ベンチマーク/[ベンチマーク]リンク://タグ/java/[java]
loop
performance