我多次运行基准测试,记下平均读数。但我注意到在第一次运行后,后续运行速度更快。我猜是跟Instruction Cache有关,所以下次运行程序的时候,benchmark已经在cache中有指令了。有没有办法启动一个既有冷指令又有数据缓存的程序?
最佳答案
这是正常行为。避免此问题的一种方法是在主要运行之前进行少量热身。这些预热运行将覆盖先前运行程序的缓存内存。在计算平均值时,排除热身运行值仅取实际运行。那里有各种采用这些方法的基准标记工具。 kernbench , lmbench 等。其中有可用的预热值。
而且,如果您正在运行的基准测试依赖于需要从磁盘读取的数据,那么磁盘缓存也会产生一些影响,避免的一种方法是尽可能将这些数据缓存到内存中。 kernbench 中使用了此技术,以避免与磁盘缓存相关的问题。
关于c - 如何使用冷缓存启动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732099/