Pro začátek si proberme řešení daného problému. Java poskytuje vestavěnou metodu nazvanou System.nanoTime() pro měření uplynulého času v nanosekundách. Tato metoda je užitečná při měření času potřebného k provedení bloku kódu.
long startTime = System.nanoTime(); // Your code here long endTime = System.nanoTime(); long executionTime = endTime - startTime;
Přístup je poměrně jednoduchý: zaznamenáme počáteční čas těsně před provedením problematického bloku kódu a poté zaznamenáme čas ukončení hned po provedení kódu. Poté můžeme vypočítat dobu trvání a dospět ke skutečné době provádění kódu.
Vysvětlení kódu krok za krokem
Krok 1: Zaznamenejte počáteční čas pomocí System.nanoTime():
long startTime = System.nanoTime();
- Jedno Doba spuštění proměnná bude obsahovat počáteční čas získaný z System.nanoTime().
Krok 2: Spusťte blok kódu, který chcete měřit:
// Your code here
- Tento krok slouží hlavně k demonstraci umístění vašeho bloku kódu po výpočtu startTime.
Krok 3: Zaznamenejte konečný čas po provedení bloku kódu:
long endTime = System.nanoTime();
- Jedno čas ukončení proměnná ukládá aktuální čas získaný z System.nanoTime() po provedení bloku kódu.
Krok 4: Vypočítejte a zobrazte dobu provedení:
long executionTime = endTime - startTime; System.out.println("Execution time: " + executionTime + " nanoseconds");
- Jedno doba provedení proměnná ukládá rozdíl mezi endTime a startTime.
- Příkaz println zobrazuje dobu provedení v nanosekundách.
Metoda System.nanoTime().
V této části se ponoříme do podrobností o metodě System.nanoTime(). Je důležité porozumět funkčnosti metody, abyste zajistili, že při měření získáte přesné výsledky:
- System.nanoTime() vrací aktuální hodnotu nejpřesnějšího dostupného systémového časovače v nanosekundách. Tento časovač má přesnost na nanosekundy, ale neměl by být zaměňován s přesností – jednoduše poskytuje přesné měření času.
- System.nanoTime() je ideální pro měření uplynulého času, protože není ovlivněn žádnými úpravami systémových hodin.
- Všimněte si, že to není určeno pro získání absolutního časového razítka; jeho účel spočívá čistě v měření časových intervalů.
Alternativy k System.nanoTime()
Ačkoli je System.nanoTime() nejpřesnější dostupnou metodou, lze pro měření doby provádění na základě vlastních potřeb použít i jiné metody.
- System.currentTimeMillis(): Vrátí aktuální čas v milisekundách od 1. ledna 1970 v 00:00:00 GMT (epocha Unixu). Je méně přesný než System.nanoTime(), ale může být pro určité případy použití dostačující.
- Třída stopky Java: Tato třída nástrojů poskytuje vyšší úroveň a uživatelsky přívětivější rozhraní pro měření uplynulého času. Je součástí knihovny Google Guava, která zajišťuje snadnou implementaci a jasné techniky při měření časů provádění.
Závěrem lze říci, že měření doby provádění konkrétní části kódu je klíčové pro optimalizaci výkonu v aplikaci Java. Využitím metody System.nanoTime() mohou vývojáři získat přesná měření a snadno vyřešit úzká místa aplikací.