这可能是一个奇怪的问题,但有没有办法让C ++程序运行得更慢?
我试图用这种方式比较不同操作的表现:
DWORD start, end;
start = GetTickCount();
//...Operation 1...//
end = GetTickCount();
cout << "Exec Time (1): " << (double) end - start / (double) 1000 << "seconds";
start = GetTickCount();
//...Operation 2...//
end = GetTickCount();
cout << "Exec Time (2): " << (double) end - start / (double) 1000 << "seconds";
...
输出:
Exec Time (1) : 0 seconds
Exec Time (2) : 0.015 seconds
问题是每次操作都太快我无法比较速度.. 我想让它们运行得更慢,这样我就可以在处理大量数据时比较性能......
有办法做到这一点吗?
或者实际上是否有更好的方法来测试这些而不记录每个tickcount?
答案 0 :(得分:2)
人们通常会重复操作数千次才能获得基准,因为一次运行可能会产生异常结果。然后,您可以选择将结果除以执行次数。
答案 1 :(得分:1)
“问题是我的每个操作都太快了,无法比较速度。我想让它们运行得更慢,这样我就可以比较处理大量数据时的性能......”
无需让它们慢慢运行,只需测量多次通话并占用平均时间。您可以执行以下操作
DWORD start, end;
start = GetTickCount();
for(int i = 0; i < 10000; ++i) {
//...Operation 1...//
}
end = GetTickCount();
cout << "Average exec Time (1): "
<< ((double) (end - start) / 10000) / (double) 1000 << "seconds" << endl;
// Analogous for Operation 2 ...
答案 2 :(得分:0)
GetTickCount是一个低分辨率计时器。尝试使用Windows的QueryPerformanceCounter或使用Linux的clock_gettime。