在我对各种编译器书籍和网站的独立研究中,我正在学习编译器可以优化编译代码的许多不同方法,但我无法确定每个优化将给予多少好处.
大多数编译器编写者如何决定首先实现哪些优化?或者哪些优化值得努力或不值得努力?我意识到这将在代码类型甚至单个程序之间有所不同,但我希望大多数程序之间有足够的相似性来说,例如,一种给定的技术通常会比另一种技术提供更好的性能增益.
我发现在实现教科书编译器优化时,他们中的一些倾向于反转其他优化所做的改进.这需要大量的工作来试图找到它们之间的正确平衡.
所以你的问题确实没有一个好的答案.一切都是权衡.许多优化在一种类型的代码上运行良好,但对其他类型的代价是悲观的.这就像设计一个房子 - 如果你把厨房做得更大,那么食品室就会变小.
构建优化器的真正工作是尝试各种组合,对结果进行基准测试,并像主厨一样,选择合适的成分组合.