4

我知道有内存缓存,因此使用内存中许多不同点的值会导致缓存未命中并损害性能。当一个程序被执行时,它是否真的以类似于 L1 缓存的小块从内存加载到 CPU 中?我问是因为大概然后频繁地在内存中跳跃会导致此缓存未命中并损害性能。所以我想这是两个问题:是否有这样的“执行缓存”并且经常跳来跳去会损害性能。

PS 不确定除了性能和缓存之外还有什么合适的标签。

PPS 一个示例情况可能是一个包含大量嵌套ifs 和elses 的紧密循环,其中每个 if 和 else 嵌套底部的最终结果只是少量代码。

4

1 回答 1

3

是的。这个缓存称为指令缓存。用尽它会对性能产生严重影响。这就是内联函数并不总是有益的原因。内联函数会更快,但臃肿的代码大小可能会将热路径赶出 I-cache。

Linux 内核开发者邮件列表对此主题进行了有趣的讨论。

于 2012-04-19T16:49:54.320 回答