Avatar billede tblaster Nybegynder
27. september 2006 - 18:30 Der er 3 kommentarer og
2 løsninger

Tage tid på gennemløb af kode

Hejsa

Jeg er ved at lave et lille program i BlueJ og vil gerne vide hvor langtid det tager at gennemløbe mine funktioner. Mit spøgsmål går derfor på hvordan jeg kan starte en tid og så finde ud af hvor langtid det tog at gennemløbe en del af min kode, eks:

START TID
System.out.println("Compare '" + s4.getA() + "' og '" +s4.getB() +"'. Equal : " + s4.result());
SLUT TID og udskriv denne ...

På forhånd tak
Avatar billede schwarz84 Nybegynder
27. september 2006 - 19:10 #1
Det er såmænd let. Metoden System.nanoTime() (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#nanoTime()) giver dig et tidspunkt i nanosekunder. Kald den før og efter din beregning er kørt, så er differencen mellem de to den tid, der er gået i nanosekunder...
Avatar billede tblaster Nybegynder
27. september 2006 - 19:32 #2
Super. Er der en smart måde at konverter tiderne til nogle fornuftige enheder eller er det bare med at gøre noget lig følgende:

        long startTime = System.nanoTime();
        [UDFØR EN LÆNGERE KODE]
        long slutTime = System.nanoTime() - startTime;
        String enhed = "ns";
       
        if (slutTime > 1000000000) { slutTime = slutTime/1000000000; enhed="sek";}
        else if (slutTime > 1000000) { slutTime = slutTime/1000000; enhed="msek";}
        else if (slutTime > 10000) { slutTime = slutTime/10000; enhed="usek";}
        runtime = slutTime + " " + enhed;

Og smid endelig et svar!
Avatar billede hacked Nybegynder
30. september 2006 - 06:46 #3
Eksempel:

long time = System.currentTimeMillis();
Calendar calendar = Calendar.getInstance(); <- abstrakt klasse
calendar.setTimeInMillis(time);
System.out.println("Timer:" + calendar.get(Calendar.HOUR));
System.out.println("Minutter:" + calendar.get(Calendar.MINUTE));
System.out.println("Sekunder:" + calendar.get(Calendar.SECOND));
System.out.println("Millisekunder:" + calendar.get(Calendar.MILLISECOND));

Du kan også bruge Date men der er en del metoder der er deprecated.
Du kan også bruge GregorianCalendar istedet for Calendar (ikke abstrakt kan instantieres).
Avatar billede tblaster Nybegynder
01. oktober 2006 - 19:46 #4
Super. schwarz84 smid et svar så får I lov at dele.
Avatar billede schwarz84 Nybegynder
07. oktober 2006 - 16:14 #5
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester