1

我正在尝试使用 Intels RDTSC 进行一些性能测量,我在不同的测试运行中得到的变化很奇怪。在大多数情况下,我的 C 基准测试需要 3000000 个 Mio 周期,但是,完全相同的执行在某些情况下可能需要 5000000 个,几乎是两倍。我尝试不让密集的工作负载并行运行,以便获得良好的性能估计。有人知道这种巨大的时间变化是从哪里来的吗?我知道可能会发生中断和其他事情,但我没想到时间会有如此巨大的变化!

PS.:我在奔腾处理器上运行它,上面运行着 Linux。

感谢您的反馈,约翰

4

3 回答 3

2

我认为答案在:

试图让没有密集的工作负载并行运行

在现代操作系统中,您对此没有足够的控制权。

于 2010-01-24T12:33:09.580 回答
0

您必须考虑大多数现代处理器的缓存。在您测量长时间运行时间的情况下,也许另一个进程会驱逐您程序的缓存内容。正如 Henk 指出的那样,现代操作系统中发生了很多你无法控制的事情。

于 2010-01-24T12:53:47.660 回答
0

根据这篇 Wikipedia 文章,RDTSC(时间戳计数器)不能可靠地用于多核系统的基准测试。不能保证所有内核在时间戳寄存器中具有相同的值。

在 Linux 上,最好使用 POSIXclock_gettime函数。

于 2010-01-24T12:00:29.857 回答