Gastando las respuestas anteriores, aquí hay una macro que hace todo por ti.
#include <QDebug>
#include <QElapsedTimer>
#define CONCAT_(x,y) x##y
#define CONCAT(x,y) CONCAT_(x,y)
#define CHECKTIME(x) \
QElapsedTimer CONCAT(sb_, __LINE__); \
CONCAT(sb_, __LINE__).start(); \
x \
qDebug() << __FUNCTION__ << ":" << __LINE__ << " Elapsed time: " << CONCAT(sb_, __LINE__).elapsed() << " ms.";
Y entonces usted puede utilizar simple como:
CHECKTIME(
// any code
for (int i=0; i<1000; i++)
{
timeConsumingFunc();
}
)
de salida:
onSpeedChanged: 102 Tiempo transcurrido: 2 ms.
En mi máquina virtual WinXP parece que solo tiene 10 ms de precisión. ¿Alguien puede confirmar/denegar esto? Obtengo valores de 0, 10 y 20 para una operación que estoy probando. –
Windows no es tan preciso como un sistema operativo de tipo UNIX al momento. –
IIRC, en Windows XP, la resolución del reloj del sistema informada por defecto es 15ms, pero con algunas llamadas winapi dependientes de Windows, puede obtener una mejor resolución si solo hay 1ms o mejor RTSC en la placa base – quetzalcoatl