Temporizador de alta resolución con C++ y Linux?
timer (6)
Aquí hay un enlace que describe cómo hacer tiempos de alta resolución en Linux y Windows ... y no, no use RTSC.
En Windows hay algunas funciones prácticas como QueryPerformanceCounter
de mmsystem.h
para crear un temporizador de alta resolución. ¿Hay algo similar para Linux?
Con C ++ 11, use std::chrono::high_resolution_clock
.
Ejemplo:
#include <iostream>
#include <chrono>
typedef std::chrono::high_resolution_clock Clock;
int main()
{
auto t1 = Clock::now();
auto t2 = Clock::now();
std::cout << "Delta t2-t1: "
<< std::chrono::duration_cast<std::chrono::nanoseconds>(t2 - t1).count()
<< " nanoseconds" << std::endl;
}
Salida:
Delta t2-t1: 131 nanoseconds
No tengo más que este enlace: http://www.mjmwired.net/kernel/Documentation/rtc.txt
Estoy bastante seguro de que RTC es lo que estás buscando.
EDITAR
Otras respuestas parecen más portátiles que las mías.
Para Linux (y BSD), quiere usar clock_gettime() .
#include <sys/time.h>
int main()
{
timespec ts;
// clock_gettime(CLOCK_MONOTONIC, &ts); // Works on FreeBSD
clock_gettime(CLOCK_REALTIME, &ts); // Works on Linux
}
Ver: esta respuesta para más información
Por mi dinero, no hay un temporizador multiplataforma más fácil de usar que la clase QTime de Qt.
Se ha preguntado antes aquí , pero básicamente, hay una función boost ptime que puede usar, o una función POSIX clock_gettime () que puede servir básicamente para el mismo propósito.