0
long long delta;
auto oldTime = std::chrono::high_resolution_clock::now();
std::vector<int> list;
for (int i = 0; i < 100; i++)
{
auto x = i * i/std::pow((double)i/50, 2) ;
list.push_back(x);
auto now = std::chrono::high_resolution_clock::now();
delta = std::chrono::duration_cast<std::chrono::nanoseconds>(now - oldTime).count();
oldTime = now;
std::cout << delta << std::endl;
}
delta
는 0ns를 취할 수있는 방법을 전체 반복 .. 그러나 결과 중 일부는 0과 동일하며, 많은 NS는, 계산 간단한 방정식의 표시 결과를 삽입하는 데 걸린 보여 가정한다?델타 시간은 항상 0
하드웨어 해상도가 1ns 정확도 또는 해상도가되지 않을 수 있습니다. 당신은 단 한번의 반복만으로 시간을 재는 것이 아니라, 즉시 수백만 번 반복해야합니다. –
그가 말한 것. 마이크로 또는 밀리 세컨드를 사용하고 델타의 기본 유형으로 두 배로 길게는 아니지만 :) ('std :: chrono :: duration') 아, MSVC를 사용하는 경우 , high_resolution_clock은 끔찍한데, 더 나은 해상도/정확성을 위해 boost_1을 사용하십시오. –
melak47