Optimization 编译器优化实现

Optimization 编译器优化实现,optimization,compiler-construction,implementation,Optimization,Compiler Construction,Implementation,实际上,我正在做一个实现编译器优化技术的重大项目。我已经知道现有的技术,但我不知道选择什么技术以及如何实现它。假设您有一个要优化的编译器,如果它不是由您编写的,请查阅文档以查看缺少的内容。否则,如果它是你写的,你可以从最简单的开始。最简单的定义取决于编译器使用的语言。还是我错过了什么?G'day 你说的优化领域是什么 编译器优化,例如: 循环优化 数据流优化 基于静态单赋值的优化 代码生成器优化 等等 等等 或者优化编译器本身的性能,即它的工作速度?IMHO,要做的事情是实现简单、明显的优化

实际上,我正在做一个实现编译器优化技术的重大项目。我已经知道现有的技术,但我不知道选择什么技术以及如何实现它。

假设您有一个要优化的编译器,如果它不是由您编写的,请查阅文档以查看缺少的内容。否则,如果它是你写的,你可以从最简单的开始。最简单的定义取决于编译器使用的语言。还是我错过了什么?

G'day

你说的优化领域是什么

编译器优化,例如:

  • 循环优化
  • 数据流优化
  • 基于静态单赋值的优化
  • 代码生成器优化
  • 等等
  • 等等

或者优化编译器本身的性能,即它的工作速度?

IMHO,要做的事情是实现简单、明显的优化,然后让它休息。当然,尝试进行奇怪而精彩的优化来纠正用户本来可以编写得更好的东西是非常有趣的,但是如果您真的想在糟糕的编码或糟糕的设计之后尝试清理,用户总是可以超越您


我最喜欢的编译器优化疯狂的例子是Fortran编译器,它们对代码进行了如此长的置乱,以减少一些假设的周期,这些周期几乎不可能调试代码,并且通常程序计数器在其中的时间不到1%,所以这些努力都白费了。

我想你可能对你的问题进行了过度优化。您是在尝试决定从何处开始,还是在尝试决定某些优化是否值得实现,而其他优化是否值得实现?我假设所有现有的技术都有一席之地,并且根据它们遇到的代码而有用。如果你决定先做哪一个,选择你能做的,然后去做。摘低垂的水果。在你遇到困难、绊倒和沮丧之前,先从你的后口袋里获得一些胜利。我认为真正的诀窍是让所有的优化都在那里并发挥作用,但要想出一种方法来决定哪些优化能为特定的程序带来更好的效果,哪些会阻碍并使事情变得更糟。

你能说得更具体些吗?例如,不清楚您在谈论什么技术。