2008-10-29 65 views
6

據我所知,沒有辦法提示c#編譯器內聯一個特定的函數,我想這就是設計。有沒有辦法在c#中強制函數內聯?

我也認爲不要讓程序員指定什麼內聯和什麼不是一個好主意,因爲這意味着你認爲你比JIT編譯器更聰明(我尊重那些實際上是) ,但是,如果我想指定一個代碼的關鍵部分需要以非常快的速度完成,無論如何在目標機器上實現它,到目前爲止,你還不能做這樣的事情,我不知道c#語言和JIT是否會支持這個功能。

就我而言,我知道目標機器是什麼,我知道函數內聯將有助於提高性能。這讓我想到實現函數內聯的唯一方法是瞭解JIT在什麼情況下可以做到這一點,但我認爲這不是一個好主意,

關於這個主題的任何亮點都將非常感謝。

謝謝。

回答

10
3
if(performance < ACCEPTABLE){ 
    if(profiler.showsAffectOfMethodCallOverhead() && seriouslyWeDoubleChecked()){ 
     if(runtimeContext.isReallyStableAndNotProneToChange() && weNeedToGetThisThingBatOutOfHellFast()){ 
      return thisIsOneOfTheFewTimesWhenANativeExternalFunctionMayBeWorthIt(); 
     } 
    } 
} 
return dontWorryAboutIt(); 

如果您執行的是罕見的路徑,打破了你的C或ASM。

相關問題