Obtener la hora actual, en milisegundos, en C?

¿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.