Уменьшает ли вызов метода производительность?

Например:
Код 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?

6
задан JatSing 7 December 2011 в 15:40
поделиться