启用链接时优化的技术和模式?

时间:2011-11-05 23:02:57

标签: c optimization

链接时优化(LTO)(也称为统一构建)包含在GCC 4.5或更高版本中,其他编译器具有类似的优化传递。这不会使某些代码模式比以前更可行吗?

例如,为了获得最佳性能,C代码的“模块”通常需要暴露其内容。 LTO是否过时了?现在哪些代码模式不可行?

1 个答案:

答案 0 :(得分:2)

我认为LTO只是一种优化,但不一定能消除对任何模块的实施文档(“暴露内容”)的需求。已经为此编写了整个语言;我不认为C很快就会将这种需要从中删除,或者也许永远不会。

来自the description of the LTO feature in gcc

  

链接时间优化(LTO)为GCC提供了倾销它的能力   内部表示(GIMPLE)到磁盘,使所有不同   构成单个可执行文件的编译单元可以优化为   单个模块。这扩大了程序间的范围   优化包含整个程序(或者更确切地说,包括所有内容)   这在链接时可见。

From the announcement of LTO's inclusion into gcc

  

原则上,结果应该更快地执行,但我们的IPA成本   LTO的模型仍未调整。我们已经看到了加速以及   基准测试放缓(参见LTO测试人员)   http://gcc.opensuse.org/)。