故意使C ++程序运行速度较慢以进行测试?

时间:2014-07-15 14:25:16

标签: c++ visual-c++ testing

这可能是一个奇怪的问题,但有没有办法让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?

3 个答案:

答案 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。