Merjenje ( sistemskega ) časa


Uvod

V programskem okolju kot je Java je hitrost izvajanja programov vedno naša skrb.  Oglejmo si metodo za ugotavljanje hitrosti izvajanja programov.

Ponavadi naredimo tri korake:

Razlika med korakoma 3 in 1 je čas, ki je bil potreben za izvajanje programa.
V Javi ta koda izgleda tako:
 
long startTime = System.currentTimeMillis( );

// vaš program  ..... //

long stopTime = System.currentTimeMillis( );

long runTime = stopTime - startTime;
System.out.println("Čas izvajanja: " + runTime);

Vse, kar morate narediti je da na mesto // vaš program // napišete kodo vašega programa.
Edini 'trik' je, kako dobiti sistemski čas. Metoda System.currentTimeMillis(  )  vrne trenutni čas v milisekundah od 1 Januarja leta 1970. Iz tega sledi, da bo spremenljivka stopTime vedno večja od spremenljivke startTime, zato pa bo spremenljivka runTime vedno pozitivno število, ki  pove, koliko časa se je izvajal vaš program, in sicer v milisekundah.

Kdaj ta metoda ne učinkuje?

Ponavadi uporabljamo to metodo na enouporabniških ali na večuporabniških delovnih postajah, ki niso zasedene. Na večuporabniških sistemih je možno, da v času merjenja hitrosti izvajanja delujejo drugi procesi in tako se poveča spremenljivka runTime, kar nam pokvari meritev.

Ta metoda deluje, če naše izvajanje programa traja dlje kot nekaj milisekund, saj nekaj procesorskega časa vzame tudi metoda System.currentTimeMillis( ). Ker pa nam ta metoda vrne čas na milisekunde natančno, z njo ni primerno merjenje hitrosti izvajanja programa, ki se izvaja le nekaj milisekund, saj je takrat prevelika napaka zaradi zaokrožanja.

Natančnost meritve lahko povečamo tudi na ta način, da na program zaženemo večkrat in dobljen čin, da naš program zaženemo večkrat šin dobljen


avtor: Klemen Šavli