动态指令调度等CPU设计的进步是否缩小了splat编译器生成的代码与优化编译器之间的性能差距,即编译器最近可能会变得更加愚蠢?
答案 0 :(得分:2)
相反,优化编译器在当代CPU上实现更多功能。自动矢量化使代码速度提高了几倍。现代指令集也提供了一些优化机会(例如,在x86上使用CMOV而不是条件分支)。
有些领域的业绩差距缩小了。 CPU更快地执行函数调用,因此函数内联可能不像以前那样有用。循环展开有时可能会使代码变慢。但在大多数情况下,编译器优化和CPU优化彼此正交。 CPU无法进行循环融合或常见的子表达式消除。编译器无法提供动态指令调度,分支预测或数据预取的良好替代方案。