Saltar al contenido

Medir tiempo, milisegundos o microsegundos para Windows C++

Hola usuario de nuestro sitio web, tenemos la respuesta a tu búsqueda, has scroll y la hallarás aquí.

Solución:

Puedes usar el C++ estándar Biblioteca:

#include 
#include 

// long operation to time
long long fib(long long n) 
  if (n < 2) 
    return n;
   else 
    return fib(n-1) + fib(n-2);
  


int main() 
  auto start_time = std::chrono::high_resolution_clock::now();

  long long input = 32;
  long long result = fib(input);

  auto end_time = std::chrono::high_resolution_clock::now();
  auto time = end_time - start_time;

  std::cout << "result = " << result << 'n';
  std::cout << "fib(" << input << ") took " <<
    time/std::chrono::milliseconds(1) << "ms to run.n";

Una cosa a tener en cuenta es que usar habilita el código de temporización genérico y seguro, pero para obtener ese beneficio, debe usarlo de manera un poco diferente de lo que usaría bibliotecas de temporización tontas e inseguras que almacenan duraciones y puntos de tiempo en tipos como int. Aquí hay una respuesta que explica algunos escenarios de uso específicos y las diferencias entre el uso de bibliotecas sin tipo y las mejores prácticas para usar crono: https://stackoverflow.com/a/15839862/365496


El mantenedor de la implementación de la biblioteca estándar de Visual Studio ha indicado que la baja resolución de high_resolution_clock se ha corregido en VS2015 mediante el uso de QueryPerformanceCounter().

Debe usar las API de QPC/QPF para calcular el tiempo de ejecución. Invoque el código que desee entre llamadas a QueryPerformanceCounter y luego use QueryPerformanceFrequency para convertirlo de ciclos a microsegundos.

LARGE_INTEGER nStartTime;
LARGE_INTEGER nStopTime;
LARGE_INTEGER nElapsed;
LARGE_INTEGER nFrequency;

::QueryPerformanceFrequency(&nFrequency); 
::QueryPerformanceCounter(&nStartTime);

    SomethingToBeTimed();

::QueryPerformanceCounter(&nStopTime);
nElapsed.QuadPart = (nStopTime.QuadPart - nStartTime.QuadPart) * 1000000;
nElapsed.QuadPart /= nFrequency.QuadPart;

Referencias: http://msdn.microsoft.com/en-us/library/windows/desktop/dn553408(v=vs.85).aspx

Estas buscando QueryPerformanceCounter y funciones relacionadas.

Nos puedes añadir valor a nuestro contenido informacional añadiendo tu experiencia en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *