现在的位置: 首页 > 综合 > 正文

link time code generation

2013年04月05日 ⁄ 综合 ⁄ 共 558字 ⁄ 字号 评论关闭

http://msdn.microsoft.com/en-us/magazine/cc301698.aspx

在link时刻做的代码优化。

平时接触的编译器优化基本是compile time优化,比如inline这样的工作。

其限制就是可以做的东西就是在一个编译单元里,一旦调用的一个函数在另外一个编译单元,就只有跳转着一个选择,至于跳转的细节就是在link time来决定了。

 

link time 优化就是在拿到所有编译单元结果了之后,在全局做的一个优化,这时候可以理解成整个编译域变成一个编译单元,很多compile时刻的优化可以linktime做了。

比如inline,调用函数的时候,不用所有的东西都push到stack里,也可以直接放到register里直接调用。

或者更好的thread local storage的reference。

 

我在查看asm的时候还发现过把一样的函数合并,比如void func0();void func1();编译出来是一个东西,但是不在一个编译单元里,link time code generation会把向两个函数跳转的语句变成像一个地方跳转。

 

不好的地方就是编译时间变慢很多,所以shipping的时候带着ltcg(link time code generation)是不错的选择,平时开发的时候就算了吧。

【上篇】
【下篇】

抱歉!评论已关闭.