由于缓存问题,在程序中跳转会损害性能

时间:2012-04-19 16:45:20

标签: performance caching

我知道有内存缓存,因此使用内存中许多不同点的值会导致缓存未命中并损害性能。当一个程序执行它是否实际从内存加载到类似于L1缓存的小块中的cpu?我问,因为可能因此经常在内存中跳转会导致此缓存未命中并损害性能。所以我想这是两个问题:是否存在这样的“执行缓存”并且确实会频繁地破坏性能。

P.S。除了性能和缓存之外,还不确定适用于此的标记。

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

1 个答案:

答案 0 :(得分:3)

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

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