测量计算时间

时间:2013-09-22 14:49:05

标签: c

我有一个适用于迭代的程序。例如,如果我有50000次迭代,程序会进行50000次迭代,最后停止。当我测量1000次迭代的计算时间时,我得到(例如)1秒,但是50000次迭代,10秒。

我是否期望与迭代次数和计算时间成正比?对于给出的示例,我不应该期望50000次迭代50秒?我只是对结果感到困惑......

我使用clock()函数测量它。在迭代之前,我从srand(time(NULL))开始; 比定义 clock_t startTime; startTime = clock(); ..... 并用。测量最终的迭代时间 ((double)(clock() - startTime))/ CLOCKS_PER_SEC):

1 个答案:

答案 0 :(得分:2)

在现代处理器上测量性能可能很棘手,因为例如它们中的许多都具有可变的时钟速度。

这意味着它们通常会变慢,因为不需要CPU,并且它们可以使用更少的能量并以此方式产生更少的热量。

当您需要大量计算时,操作系统会检测到现在可以为CPU工作,并且可以提高时钟速度(以及热量和电流)以更快地获得结果。

要避免此特定问题,您应该测量计算所使用的时钟周期,而不是cpu时间(或更长的挂钟时间)。一个好的分析器应该给你这个选项(我正在使用oprofile)。