2011-03-14 8 views
8

¿Cómo puedo imprimir el tiempo actual de microsegundos en C en la plataforma Unix?Tiempo de microsegundo actual en C?

+4

¿En qué plataforma? – orlp

+1

Posible duplicado de [Obtener una marca de tiempo en C en microsegundos?] (Http://stackoverflow.com/questions/5833094/get-a-timestamp-in-c-in-microseconds) Ahora es posible con 'timespec_get' de C11: http://stackoverflow.com/a/36095514/895245 –

Respuesta

2

El estándar C no proporciona un medio estándar para eso. Sin embargo, la función clock() devuelve tiempo en CLOCK. hay CLOCKS_PER_SEC CLOCK en un segundo. En mi máquina e implementación, CLOCKS_PER_SEC se define como 1000. Ambos clock y CLOCKS_PER_SEC se definen en <time.h>. Espero que esto haya ayudado

5

No hay una forma portátil (multiplataforma) de obtener ese número. En Linux (u otros sistemas POSIX), por ejemplo, está la llamada gettimeofday que proporciona exactamente esa precisión (sin embargo, la precisión dependerá si ese tiempo está disponible e implementado en el hardware específico).

+1

Estrictamente hablando, creo que proporciona esa * precisión *, no necesariamente esa precisión. Pero AFAIK es lo mejor que obtendrás por el tiempo del reloj de pared. –

+0

@Steve Jessop: Gracias. Corregido – 6502

7

En Linux y BSD, puede usar la función gettimeofday(). Esto rellena una estructura timeval que tiene un campo por segundos desde la época y un campo por microsegundos. Esta función está en desuso. La resolución más alta clock_gettime() es la sustitución preferida, sin embargo, Mac OS X no la implementa. No estoy seguro de si Windows implementa alguno de estos.

+0

Para obtener una resolución superior a microsegundos en OS X, intente con esta respuesta: http://stackoverflow.com/questions/5167269/clock-gettime-alternative-in-mac-os-x – mkb

Cuestiones relacionadas