Za početak, razgovarajmo o rješenju problema. Java pruža ugrađeni metod, nazvan System.nanoTime(), za mjerenje proteklog vremena u nanosekundama. Ova metoda je korisna kada se mjeri vrijeme potrebno za izvršavanje bloka koda.
long startTime = System.nanoTime(); // Your code here long endTime = System.nanoTime(); long executionTime = endTime - startTime;
Pristup je prilično jednostavan: bilježimo početno vrijeme neposredno prije izvršavanja problematičnog bloka koda, a zatim snimamo vrijeme završetka odmah nakon izvršenja koda. Nakon toga možemo izračunati trajanje i doći do stvarnog vremena izvršenja koda.
Korak po korak objašnjenje koda
Korak 1: Zabilježite početno vrijeme koristeći System.nanoTime():
long startTime = System.nanoTime();
- The vrijeme početka varijabla će sadržavati početno vrijeme dobiveno iz System.nanoTime().
Korak 2: Izvršite blok koda koji želite izmjeriti:
// Your code here
- Ovaj korak uglavnom služi za demonstraciju postavljanja vašeg bloka koda nakon izračuna startTime.
Korak 3: Zabilježite posljednje vrijeme nakon što se vaš blok koda izvrši:
long endTime = System.nanoTime();
- The endTime varijabla pohranjuje trenutno vrijeme dobiveno iz System.nanoTime() nakon izvršenja bloka koda.
Korak 4: Izračunajte i prikažite vrijeme izvršenja:
long executionTime = endTime - startTime; System.out.println("Execution time: " + executionTime + " nanoseconds");
- The executionTime varijabla pohranjuje razliku između endTime i startTime.
- Naredba println prikazuje vrijeme izvršenja u nanosekundama.
Metoda System.nanoTime().
U ovom odeljku ćemo proći u detalje metode System.nanoTime(). Važno je razumjeti funkcionalnost metode kako biste osigurali da dobijete tačne rezultate u svojim mjerenjima:
- System.nanoTime() vraća trenutnu vrijednost najpreciznijeg dostupnog sistemskog tajmera u nanosekundama. Ovaj tajmer ima nanosekundnu preciznost, ali ga ne treba brkati sa preciznošću – jednostavno pruža precizno mjerenje vremena.
- System.nanoTime() idealan je za mjerenje proteklog vremena jer na njega ne utiču nikakva podešavanja sistemskog sata.
- Imajte na umu da nije namijenjen za dobivanje apsolutne vremenske oznake; njegova svrha leži isključivo u mjerenju vremenskih intervala.
Alternative System.nanoTime()
Iako je System.nanoTime() najpreciznija dostupna metoda, druge metode se mogu koristiti za mjerenje vremena izvršenja na osnovu nečijih potreba.
- System.currentTimeMillis(): Vraća trenutno vrijeme u milisekundama od 1. januara 1970. u 00:00:00 GMT (Unix epoha). Manje je precizan od System.nanoTime(), ali može biti dovoljan za određene slučajeve upotrebe.
- Java klasa Štoperice: Ova uslužna klasa pruža viši nivo i korisnički prilagođeniji interfejs za mjerenje proteklog vremena. To je dio Google Guava biblioteke, osiguravajući jednostavnu implementaciju i jasne tehnike prilikom mjerenja vremena izvršenja.
U zaključku, mjerenje vremena izvršenja određenog dijela koda je ključno za optimizaciju performansi u Java aplikaciji. Koristeći metodu System.nanoTime(), programeri mogu dobiti precizna mjerenja i s lakoćom riješiti uska grla u aplikaciji.