VC.NET 的链接时代码生成 LTCG - Link-time Code Generation

MSDN 原文: Link-time Code Generation

The Key:
C++ 程序正常的代码生成包括三个步骤:
1. 前端,C1, 读取源代码,产生符号表,分析源代码,检查语法正确性,产生某种中间代码(IL)。调用后端。
2. 后端,C2, 代码生成器,读取IL,产生针对CPU的具体代码,代码优化,产生包括实际代码和数据的obj文件。
3. 链接,Linker,读取所有的obj文件和lib文件,建所有的代码和数据合成到最终的.exe可执行文件中。

LTCG - Link-time Code Generation 链接时代码生成
1. 前端C1直接产生 IL 的 obj 文件。不调用C2。
2. Linker读取所有的 IL obj 文件和 lib 文件,调用C2,将所有的 IL 代码塞给C2以产生最终的实际代码。
好处:因为C2可以得到所有的代码,它可以进行更好的代码优化,更好的 inline (跨模块,跨源文件的 inline),和 TLS优化。

怎样打开LTCG
1. 在 VC.NET IDE 中,将Whole Program Optimization 设置为 Yes。
2. 命令行参数,编译器使用 /GL, 链接时使用参数 /LTCG
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值