链接时优化(LTO)(也称为统一构建)包含在GCC 4.5或更高版本中,其他编译器具有类似的优化传递。这不会使某些代码模式比以前更可行吗?
例如,为了获得最佳性能,C代码的“模块”通常需要暴露其内容。 LTO是否过时了?现在哪些代码模式不可行?
答案 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/)。