Рубрики
Без рубрики

Java – В то время как vs Для итератора vs Проверка производительности

– Java – В то время как vs Для теста производительности итератора vs

Лучший способ – использовать OpenJDK JMH фреймворк для проведения тестового тестирования, поскольку он автоматически позаботится о проблемах с прогревом JVM, см. Этот пример – Учебник по тестированию Java JMH

Простой код Java для проверки производительности следующих методов циклирования:

  1. В то время как Цикл
  2. Для цикла
  3. Цикл итератора

В Java просто сравните время окончания и время начала, чтобы получить истекшее время функции.

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

В то время как vs Для итератора vs

Код Java для зацикливания Списка , содержащего 1, 5, 10 и 15 миллионов записей.

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 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 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 -------

Iterator - Elapsed time in milliseconds: 390


--------- For Loop --------

For - Elapsed time in milliseconds: 234


--------- While Loop -------

While - Elapsed time in milliseconds: 234

Цикл итератора является самым медленным, и разница между циклом for и циклом while не столь существенна.

Рекомендации

  1. Учебник по тестированию Java JMH

Оригинал: “https://mkyong.com/java/while-loop-for-loop-and-iterator-performance-test-java/”