Tempo de medição resulta em valores de retorno de 0 ou 0,001
Estou tentando usarchrono::steady_clock
para medir segundos fracionários decorridos entre um bloco de código no meu programa. Eu tenho esse bloco de código trabalhando no LiveWorkSpace (http://liveworkspace.org/code/YT1I$9):
#include <chrono>
#include <iostream>
#include <vector>
int main()
{
auto start = std::chrono::steady_clock::now();
for (unsigned long long int i = 0; i < 10000; ++i) {
std::vector<int> v(i, 1);
}
auto end = std::chrono::steady_clock::now();
auto difference = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count();
std::cout << "seconds since start: " << ((double)difference / 1000000);
}
Quando eu implementar a mesma ideia no meu programa da seguinte forma:
auto start = std::chrono::steady_clock::now();
// block of code to time
auto end = std::chrono::stead_clock::now();
auto difference = std::chrono::duration_cast<std::chrono::microseconds>(end - start).count()
std::cout << "seconds since start: " << ((double) difference / 1000000);
O programa só imprimirá valores de0
e0.001
. Eu duvido muito que o tempo de execução para o meu bloco de código seja sempre igual0
ou1000
microssegundos, então, o que está contribuindo para esse arredondamento e como posso eliminá-lo para que eu possa obter os valores fracionários apropriados?
Este é um programa do Windows.