例如:
代碼1:調用方法是否會降低性能?
void Main()
{
Console.WriteLine("Some texts");
}
代碼2:
void Main()
{
Foo();
}
void Foo()
{
Console.WriteLine("Some texts");
}
是否代碼2運行比代碼1慢?不過,我覺得當我們構建發佈的JIT將內嵌代碼2這樣的話代碼2將跑步速度最快的代碼1.但是,當我與LinqPad測試他們給我的IL結果:
代碼1:
IL_0000: ldstr "Some texts"
IL_0005: call System.Console.WriteLine
代碼2:
IL_0000: ldarg.0
IL_0001: call UserQuery.Foo
Foo:
IL_0000: ldstr "Some texts"
IL_0005: call System.Console.WriteLine
IL_000A: ret
正如我們所看到的IL結果代碼2有一些額外步驟調用foo(),這是否證明代碼2的運行速度低於碼1?
您是在Debug還是Release模式下運行? – Tudor
@Tudor:我在[LinqPad](http://www.linqpad.net/)中測試了它們,我不知道它運行的是哪種模式。有沒有辦法讓Visual Studio顯示這樣的IL結果? – JatSing
你有兩匹馬。你想知道哪個更快。你是否(1)在互聯網上向隨機的陌生人詢問哪一個更快,或者(2)彼此競爭,看看哪一個獲勝? –