2015-10-27 17 views
7

所以這個問題很簡單,在Elixir中什麼時候應該使用什麼內聯?什麼時候在Elixir中內聯一個函數

通過內聯我的意思是這樣的:@compile {:inline, myfun: 1}

附:我知道Erlang文檔here中有關於該主題的信息,但我仍然不確定我的理解。

回答

13

當您內聯一個函數時,它的調用將在編譯時被函數體本身替換。這可以用來擠出特定函數調用的最後一點性能,消除單個函數調用的開銷。不幸的是,它還會使堆棧跟蹤更難以閱讀,因爲原始函數在編譯的代碼中確實不存在。所以當你使用內聯時,你應該確信真的是確信內聯函數是防彈的,否則你會讓你的代碼更難調試。

我真的不打擾內聯,除非你有一個簡單的函數,所有的時間都被稱爲Take a look at the Elixir source code to get a feeling在這種情況下使用內聯 - 您會發現在列表,地圖等上運行的基本函數,並且可能會非常頻繁地調用。請注意,即使在Elixir源代碼中,內聯使用也非常謹慎,因爲在極少數情況下您只能從中受益。

相關問題