我知道有内存缓存,因此使用内存中许多不同点的值会导致缓存未命中并损害性能。当一个程序执行它是否实际从内存加载到类似于L1缓存的小块中的cpu?我问,因为可能因此经常在内存中跳转会导致此缓存未命中并损害性能。所以我想这是两个问题:是否存在这样的“执行缓存”并且确实会频繁地破坏性能。
P.S。除了性能和缓存之外,还不确定适用于此的标记。
P.P.S。一个示例情况可能是包含大量嵌套if
和else
的紧密循环,其中每个if和else嵌套底部的最终结果只是少量代码。
答案 0 :(得分:3)
是。此缓存称为指令缓存。耗尽它会对性能产生严重影响。这就是内联函数并不总是有益的原因。内联函数将更快,但膨胀的代码大小可能会驱动I-cache的热路径。
Linux内核deverlopers邮件列表对此主题进行了有趣的讨论。