2009-10-13 12 views

Respuesta

3

clock

A C++ función. Devuelve el número de ticks de CPU desde que se inicia la aplicación. Para convertir esto en segundos, divídalo por CLOCKS_PER_SEC.

GetTickCount

función de la API Win32. Devuelve el número de milisegundos desde que se inició el sistema.

QueryPerformanceCounter

función de la API Win32. El contador de rendimiento es un contador de alta resolución que aumenta con el tiempo. Para convertir esto en segundos divídalo por QueryPerformanceFrequency.

7

No, no tienen una precisión de milisegundos. clock y GetTickCount tienen una precisión de entre 4 y 15 milisegundos en la mayoría de los sistemas. QueryPerformanceCounter tiene una precisión en el rango de microsegundos a nanosegundos.

clock es un contenedor alrededor de GetTickCount si está utilizando la biblioteca C runtime de Microsoft, que, si está utilizando un compilador de MS, probablemente lo sea. GetTickCount devuelve un valor en milisegundos, pero no aumenta en un milisegundo una vez transcurrido un milisegundo. Solo se incrementa cuando se produce una interrupción del reloj del sistema, que es cada cuatro a 15 milisegundos, normalmente es de aproximadamente 15 ms, pero las aplicaciones pueden cambiarlo. Esto afecta a toda la computadora: afecta la programación de subprocesos, y la sobrecarga de las interrupciones más frecuentes también deja menos tiempo de CPU para ejecutar realmente el código de programa, por lo que no lo hagas a menos que realmente lo necesites. Si su computadora está funcionando con más frecuencia que 15ms, alguna otra aplicación ha modificado la frecuencia de interrupción de ticks.

QueryPerformanceCounter utiliza los temporizadores de alta resolución disponibles en el sistema. En el pasado, generalmente se basaba en el recuento interno de ciclos de reloj del procesador, por lo que contaría a 2-3 GHz, o aproximadamente 0.5ns. Desafortunadamente, algunos procesadores variaban la velocidad que el contador marcaba en los estados de bajo consumo de energía, y en los sistemas de varias CPU (es decir, con múltiples sockets de procesador) se producían problemas si las CPU no tenían la misma velocidad. Windows ahora usa otras fuentes más confiables, pero no tienen la misma resolución que el procesador. QueryPerformanceFrequency le dice cuántas marcas ocurren en un segundo. Para obtener milisegundos, multiplique la diferencia de muestras de QPC por 1000 y divida por el resultado de QueryPerformanceFrequency.

Cuestiones relacionadas