c - 如何使用冷缓存启动程序

标签 c linux gcc x86-64

我多次运行基准测试,记下平均读数。但我注意到在第一次运行后,后续运行速度更快。我猜是跟Instruction Cache有关,所以下次运行程序的时候,benchmark已经在cache中有指令了。有没有办法启动一个既有冷指令又有数据缓存的程序?

最佳答案

这是正常行为。避免此问题的一种方法是在主要运行之前进行少量热身。这些预热运行将覆盖先前运行程序的缓存内存。在计算平均值时,排除热身运行值仅取实际运行。那里有各种采用这些方法的基准标记工具。 kernbench , lmbench 等。其中有可用的预热值。

而且,如果您正在运行的基准测试依赖于需要从磁盘读取的数据,那么磁盘缓存也会产生一些影响,避免的一种方法是尽可能将这些数据缓存到内存中。 kernbench 中使用了此技术,以避免与磁盘缓存相关的问题。

关于c - 如何使用冷缓存启动程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16732099/

相关文章:

c - `void *` 函数参数类型不一致的转换方法

linux - 在 sed 中插入制表符的正确方法是什么?

c++ - 使用alignas 进行参数包扩展的语法是什么?

c++ - gcc - 编译 x386 汇编代码错误

c - 在 MacOS 上构建 mongodb C 驱动程序

有条件地包含 C 中的文件

c++ - 是否可以在不按回车键的情况下更改用户键入的内容?这是 C 中的控制台程序

python - 在 Linux 中使用 sudoers 将文件的所有者从用户更改为 root

linux - Bash/Sh 等 Shell 脚本的 IDE/Emacs 模式

c - 奇怪的 C 程序行为