Gå til innhold

C89 - noe tilsvarende Java's System.nanoTime()?


Anbefalte innlegg

Finnes det noe tilsvarende til Java's System.nanoTime() i ANSI C? Jeg ser ikke helt at noen av funksjonene i time.h gir meg dette. Har prøvd clock(), men det virker som dette kallet gir meg hvor mye CPU-tid prosessen har brukt siden den startet, ikke hvor lang tid det faktisk har gått.

 

Poenget er å ha en funksjon jeg kan bruke til å måle tiden det har gått mellom to "målepunkter" i koden (i Java ville det sett noe slikt ut):

 

long startTime = System.nanoTime();
// diverse CPU-krevende saker...
long timeUsed = System.nanoTime() - startTime;
System.out.println("Time used: " + (timeUsed / 1000000) + " ms");

Lenke til kommentar
Videoannonse
Annonse

Ja, takk skal du ha! Litt usikker på hvor portabelt det er, men... måtte ha med -lrt ved linking. Koden for å hente tid i ms ser slik ut:

 

#define CPU_CLOCK_ID CLOCK_REALTIME

static long get_time_in_millis() {
 struct timespec now;
 clock_gettime(CPU_CLOCK_ID, &now);
 return now.tv_sec * 1000 + now.tv_nsec / 1000000;
}

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...