在我的软件中,我收集了一些数据,我需要一次附加到数据(在我们这里)。我试着用
std::chrono::high_resolution_clock::now()
但似乎有~500uS的分辨率
#include <chrono>
#include <iostream>
int _tmain(int argc, _TCHAR* argv[])
{
using namespace std::chrono;
int step = 0;
while (step < 100){
static int cnt = 1;
static high_resolution_clock::time_point t1 = high_resolution_clock::now();
high_resolution_clock::time_point t2 = high_resolution_clock::now();
if (t1 != t2) {
if (step++) std::cout << cnt << std::endl;
cnt = 1;
long long microseconds = duration_cast<std::chrono::microseconds>(t2 - t1).count();
std::cout << microseconds << " x";
t1 = t2;
}
else
cnt++;
}
std::cin.ignore();
return 0;
}
结果显示,只有在前一次调用之间至少有500us时,t2才会改变:
502 x1
1003 x1
1007 x1
1001 x1
999 x1
517 x1031
485 x1286
514 x909
487 x1008
499 x931
501 x1515
502 x1382
500 x1138
501 x437
501 x1
512 x95
491 x1
499 x139
502 x591
506 x694
496 x856
501 x1474
500 x1431
501 x1649
501 x1435
501 x1653
501 x1433
501 x769
501 x1442
501 x1067
501 x1
5520 x1
996 x1
1003 x1
501 x1
1001 x1
502 x1
1001 x1
有没有更好的方法来提高精度?
由于