2013-07-02 73 views
2

(我正在尋找類似於this post的東西,但注重GCC/Linux)。使用GCC/CLANG跟蹤代碼膨脹的工具

我有很多使用大量元編程和特殊情況優化的模板沉重(如「僅模板」)代碼。 生成的二進制文件非常大,編譯時間很長。

現在我想檢查哪些函數模板生成最內嵌的彙編代碼。 我該怎麼做?

一些背景:

  • 我們有一個沉重的算法組件的C++模板庫。原作者的注意力集中在運行時速度上,並沒有考慮編譯時速度這麼多。
  • 我想提高編譯時的速度,但保持運行時速度不變,從而將一些決定放在運行時而不是編譯時。
  • 這是IMO的第一步是查看實例化副本中哪些函數模板最重。
  • 下一步就是將這些信息與它們在探查器中的使用程度相結合,並且只保留許多特殊情況下的編譯時間選項以適應熱內循環。

這是正確的路嗎?任何專業提示?

回答

1

分而治之。

首先由this method

這可能會需要幾個迭代解決運行時的問題,這並不容易。

然後學習閱讀.map文件。 你會在那裏看到哪些課程佔用了大部分的大小。 通過反覆試驗將它們取出,直到你真正需要的東西。