2015-08-15 64 views

回答

3

當一個函數被標記爲{-# INLINE #-}{-# INLINEABLE #-} -OR如果GHC認爲夠便宜™ - 整個未重整RHS被包括在接口.hi文件一起編譯.o對象。據我所知。

所以不,我敢肯定它不會傷害內聯。儘管動態鏈接會影響代碼的局部性,但與您關心的內聯方面相比,這是微觀優化。

警告:我沒有實際做過任何基準測試。

+0

你有什麼需要支持的嗎?我的意思是,我知道接口文件,但我不知道GHC是否會將它們用於共享庫。它會如何?我是否將接口文件的共享庫路徑+路徑提供給可執行文件的編譯參數?我一直無法找到關於這件事的很多信息;目前對我來說非常模糊。謝謝您的回答。 – MasterMastic

+0

這是我的頭頂,但你可以在[GHC wiki](https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/IfaceFiles)上閱讀。 GHC將無法查看任何(除此之外)任何東西(而不是接口文件)。 你可以閱讀如何[建立共享對象](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/using-shared-libs.html),但我只是讓'cabal' [處理它](https://www.haskell.org/cabal/users-guide/installing-packages.html)。 (搜索「共享」。) 你沒有提到你爲什麼要使用共享庫。所以爲什麼? – liyang

+0

哦!你的類型評論對於所有這一切突然產生了很大的意義;你很聰明。那麼我想我可以真的相信它會內聯,因爲它必須有它需要的信息。我現在不想使用共享庫來處理任何特定的事情,我只是不想在性能問題時排除它們(例如,即使是從共享庫中重複一個小函數的簡單循環,也可能會嚴重叮咬如果內聯不在那裏)。非常感謝你! – MasterMastic

相關問題