困惑于三种优化技术

时间:2009-05-06 19:41:59

标签: optimization compiler-construction

  1. 你如何完全执行“共通”?
  2. Kleene定点定理如何帮助优化?
  3. 如何从用非函数语言编写的程序中消除本地函数定义中的自由变量?
  4. 编辑:这些不是我的作业问题。我在暑假。

    EDIT2:我刚刚开始研究编译器优化,并且没有我想要优化的特定代码。您能告诉我您可以使用上述三种优化技术的一般方法是什么,或者至少告诉我正确解释它们的资源?

5 个答案:

答案 0 :(得分:2)

  1. 通过自下而上的哈希来完成。
  2. Kleene定理允许编译器实现递归方程的迭代解,该方程提供有关程序的事实。事实的一个简单例子是,在某一点,变量i总是等于0。
  3. 如果你有一个带有自由变量的局部函数,这个函数在一个封闭函数中是let-bound或lambda-bound,那么根据定义,你正在处理一个具有一等函数的语言。自由变量通常由闭包转换处理,尽管一些编译器使用lambda-lifting。
  4. 推荐搜索字词:

    • 自下而上哈希
    • Common-subexpression淘汰
    • 迭代数据流分析
    • 数据流优化变得简单
    • 延续传递,封闭传递风格
    • 关闭转换
    • Lambda提升

答案 1 :(得分:0)

这些是我在网上找到的,如果有人可以访问更多信息,请回复。

William Clinger教授上述两种技巧,并在课堂上研究更有趣的技巧: http://www.ccis.neu.edu/home/will/csg262_fall2004/syllabus.html

这些人正在使用Kleene代数进行数据流分析。我想我们可以在优化编译器中使用它: http://ieeexplore.ieee.org/Xplore/login.jsp?url=http://ieeexplore.ieee.org/iel5/4159639/4159640/04159673.pdf%3Fisnumber%3D4159640%26prod%3DCNF%26arnumber%3D4159673%26arSt%3D201%26ared%3D210%26arAuthor%3DFernandes%252C%2BT.&authDecision=-203

不幸的是,上述论文需要登录。

这是我发现的共通(但没有多大帮助): http://www.patentsurf.net/7,516,448

答案 2 :(得分:0)

答案 3 :(得分:0)

最后一个问题答案: http://en.wikipedia.org/wiki/Lambda_lifting

答案 4 :(得分:0)

诺曼的回答很好。 (我只希望你的教授不会混淆编译器可能会对软件程序员可能做的优化做出的优化。后者不是一个技术主题,所以关于它的说法不多,但在实际应用中它是数量级更重要。)