Время измерения приводит к возвращаемым значениям 0 или 0,001
Я пытаюсь использоватьchrono::steady_clock
измерить доли секунды между блоком кода в моей программе. У меня этот блок кода работает в 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);
}
Когда я внедряю ту же идею в мою программу, вот так:
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);
Программа будет только распечатывать значения0
а также0.001
, Я очень сомневаюсь, что время выполнения для моего блока кода всегда равно0
или же1000
микросекунды, так что же объясняет это округление и как я могу устранить его, чтобы получить правильные дробные значения?
Это программа для Windows.