На самом деле, стоит x64 CLR
Посмотрите здесь http://www.dotnetperls.com/named-parameters
Я могу воспроизвести результат: именованный вызов занимает 4,43 нс, а обычный вызов занимает 3,48 нс (программа работает в x64)
Однако в x86 оба требуют около 0,32 нс
Код приведен ниже, скомпилируйте и запустите его самостоятельно, чтобы увидеть разницу.
Примечаниечто в VS2012 по умолчанию targat является AnyCPU x86, вы должны переключиться на x64, чтобы увидеть разницу.
using System;
using System.Diagnostics;
class Program
{
const int _max = 100000000;
static void Main()
{
Method1();
Method2();
var s1 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
Method1();
}
s1.Stop();
var s2 = Stopwatch.StartNew();
for (int i = 0; i < _max; i++)
{
Method2();
}
s2.Stop();
Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000 * 1000) /
_max).ToString("0.00 ns"));
Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000 * 1000) /
_max).ToString("0.00 ns"));
Console.Read();
}
static void Method1()
{
Method3(flag: true, size: 1, name: "Perl");
}
static void Method2()
{
Method3(1, "Perl", true);
}
static void Method3(int size, string name, bool flag)
{
if (!flag && size != -1 && name != null)
{
throw new Exception();
}
}
}