我多次运行基准测试,记下平均读数。但我注意到第一次运行后,后续运行速度更快。我猜它与指令缓存有关,所以当我下次运行程序时,基准测试已经在缓存中有指令。有没有办法用冷指令和数据缓存来启动程序?
问问题
471 次
这是正常行为。避免此问题的一种方法是在主运行之前进行几次热身。这些热身运行将覆盖先前运行程序的高速缓存。在计算平均值时,排除热身运行值仅进行实际运行。那里有各种各样的基准标记工具,它们采用了这些方法。kernbench, lmbench 等。可以使用预热值。
而且,如果您运行的基准测试依赖于需要从磁盘读取的数据,那么磁盘缓存也会产生一些影响,避免的一种方法是将这些数据缓存到内存中,如果可能的话。该技术用于kernbench,以避免与磁盘缓存相关的问题。