link time code generation
為什么80%的碼農(nóng)都做不了架構(gòu)師?>>> ??
http://msdn.microsoft.com/en-us/magazine/cc301698.aspx
在link時刻做的代碼優(yōu)化。
平時接觸的編譯器優(yōu)化基本是compile time優(yōu)化,比如inline這樣的工作。
其限制就是可以做的東西就是在一個編譯單元里,一旦調(diào)用的一個函數(shù)在另外一個編譯單元,就只有跳轉(zhuǎn)著一個選擇,至于跳轉(zhuǎn)的細(xì)節(jié)就是在link time來決定了。
?
link time 優(yōu)化就是在拿到所有編譯單元結(jié)果了之后,在全局做的一個優(yōu)化,這時候可以理解成整個編譯域變成一個編譯單元,很多compile時刻的優(yōu)化可以linktime做了。
比如inline,調(diào)用函數(shù)的時候,不用所有的東西都push到stack里,也可以直接放到register里直接調(diào)用。
或者更好的thread local storage的reference。
?
我在查看asm的時候還發(fā)現(xiàn)過把一樣的函數(shù)合并,比如void func0();void func1();編譯出來是一個東西,但是不在一個編譯單元里,link time code generation會把向兩個函數(shù)跳轉(zhuǎn)的語句變成像一個地方跳轉(zhuǎn)。
?
不好的地方就是編譯時間變慢很多,所以shipping的時候帶著ltcg(link time code generation)是不錯的選擇,平時開發(fā)的時候就算了吧。
原文鏈接: http://blog.csdn.net/ccanan/article/details/6030323
轉(zhuǎn)載于:https://my.oschina.net/dtec/blog/44526
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的link time code generation的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux用户管理与权限
- 下一篇: Quartz2D简单绘制之不规则形状