
Jak mierzyć szybkość wykonywania kodu (Java)?
Do czasu Java 8 używano dość pokrętnych metod sprawdzania szybkości wykonywania kodu. Od czasu Java 8 jest to zdecydowanie prostsze.
Przykład w klasie Listing107:
package dt20.java_time_duration;
import java.time.Duration;
import java.time.Instant;
import java.util.Random;
public class Listing107 {
public static void main(String[] args) {
Instant start = Instant.now();
Random random = new Random();
long[] values = random.longs(10_000_000).toArray();
long min = Long.MAX_VALUE;
long max = Long.MIN_VALUE;
for(long a : values){
min = Math.min(min, a);
max = Math.max(max, a);
}
Instant end = Instant.now();
long millis = Duration.between(start, end).toMillis();
System.out.println("Czas wykonania w ms: " + millis);
System.out.println("max: " + max);
System.out.println("min: " + min);
}
}
Tworzymy tablicę zawierającą 10 mln liczb losowych. Potem (w nieuporządkowanej tablicy) wyszukujemy wartość minimalną i maksymalną.
Po wykonaniu kodu zobaczymy coś podobnego do:
Czas wykonania w ms: 317 max: 9223371249623486320 min: -9223370964566974940
Cała metoda sprowadza się do trzech linii kodu:
Instant start = Instant.now(); //testowany kod Instant end = Instant.now(); long millis = Duration.between(start, end).toMillis();
W razie potrzeby czas możemy przeliczyć na inne jednostki np. na nanosekundy, etc.
