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