link time code generation
為什么80%的碼農都做不了架構師?>>> ??
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)是不錯的選擇,平時開發的時候就算了吧。
原文鏈接: http://blog.csdn.net/ccanan/article/details/6030323
轉載于:https://my.oschina.net/dtec/blog/44526
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的link time code generation的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux用户管理与权限
- 下一篇: Quartz2D简单绘制之不规则形状