自动代码优化技术

Chu*_*Ngo 5 java compiler-construction optimization compilation compiler-optimization

我正在开发一个自动将自定义语言转换为Java的项目,并且已经要求在转换过程中对代码进行一些基本的优化.例如,自定义代码可能具有以下内容:

if someFunction(a, b) > x:
    do something
else:
    return someFunction(a, b) + y
Run Code Online (Sandbox Code Playgroud)

在这个例子中,someFunction使用相同的输入多次调用,因此可以通过缓存someFunction()的值并仅调用一次来获得额外的性能.因此,上述代码的"优化"版本可能类似于:

var1 = someFunction(a, b)

if var1 > x:
    do something
else:
    return var1 + y
Run Code Online (Sandbox Code Playgroud)

目前,这是在转换过程中手动完成的.我运行一个程序将自定义语言中的代码转换为Java,然后手动检查转换后的代码以查看可以优化的内容.我想自动化优化过程,因为这些问题一次又一次地蔓延.用自定义语言编写代码的人不想担心这些事情,所以我不能要求他们确保他们给我的代码已经优化了.

什么是教程,论文等...详细说明了如何在现代编译器中完成这些工作?我不想过多地重新发明轮子.提前致谢.

编辑1:

可以假设该功能是纯粹的.

Cin*_*ine 2

这称为公共子表达式消除

通常,这需要您实现一个完整的编译器才能进行数据流分析。Dragon Book中给出了一种算法,“6.1.2 The Value-Number Method for Constructing DAG's”(至少对于本地 CSE)。

  • 他已经声明他想要评估的函数是纯函数 (3认同)