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.