¿Cuál es la equivalencia de System.currentTimeMillis()
Java en C?
En Linux y otros sistemas similares a Unix, debe usar clock_gettime (CLOCK_MONOTONIC) . Si esto no está disponible (por ejemplo, Linux 2.4), puede recurrir a gettimeofday () . Este último tiene el inconveniente de verse afectado por los ajustes del reloj.
En Windows, puede usar QueryPerformanceCounter () .
Este código de mina resume todo lo anterior en una interfaz simple que devuelve el número de milisegundos como un int64_t. Tenga en cuenta que los valores de milisegundos devueltos están destinados solo para uso relativo (p. Ej., Tiempos de espera) y no son relativos a ningún momento en particular.
Check time.h
, tal vez algo como la función gettimeofday()
.
Puedes hacer algo como
struct timeval now; gettimeofday(&now, NULL);
Luego puede extraer el tiempo obteniendo valores de now.tv_sec
y now.tv_usec
.
Está la función time () , pero devuelve segundos, no milisegundos. Si necesita mayor precisión, puede usar funciones específicas de la plataforma como GetSystemTimeAsFileTime () de Windows o gettimeofday () de * nix.
Si realmente no te importa la fecha y la hora, solo quieres cronometrar el intervalo entre dos eventos, como este:
long time1 = System.currentTimeMillis(); // ... do something that takes a while ... long time2 = System.currentTimeMillis(); long elapsedMS = time2 - time1;
entonces el equivalente de C es reloj () . En Windows, es más común usar GetTickCount () para este propósito.
Consulte este hilo: http://cboard.cprogramming.com/c-programming/51247-current-system-time-milliseconds.html
Dice que la función time () es precisa en segundos, y una precisión más profunda requiere otras bibliotecas …
#include /** * @brief provide same output with the native function in java called * currentTimeMillis(). */ int64_t currentTimeMillis() { struct timeval time; gettimeofday(&time, NULL); int64_t s1 = (int64_t)(time.tv_sec) * 1000; int64_t s2 = (time.tv_usec / 1000); return s1 + s2; }
Escribo esta función como System.currentTimeMillis()
en Java, y tienen el mismo resultado.