c++ linux timer

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.

https://web.archive.org/web/20160330004242/http://tdistler.com/2010/06/27/high-performance-timing-on-linux-windows

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



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.