Случай переключения работает медленнее, чем операторы If else в С#, почему? [закрыто]C#

Место общения программистов C#
Ответить
Anonymous
 Случай переключения работает медленнее, чем операторы If else в С#, почему? [закрыто]

Сообщение Anonymous »

Я измерял эти два блока кода в C# и увидел, что регистр переключателей дает h,24977 тиков, а операторы if else дают h,368 тактов. Я ожидал, что оператор switch займет меньше времени, чем оператор if else.
Вот мой код:

Код: Выделить всё

int i = 6;

Stopwatch sw = Stopwatch.StartNew();
sw.Start();

switch (i)
{
case 0:
Console.WriteLine("b");
break;
case 1:
Console.WriteLine("c");
break;
case 2:
Console.WriteLine("d");
break;
case 3:
Console.WriteLine("e");
break;
case 4:
Console.WriteLine("f");
break;
case 5:
Console.WriteLine("g");
break;
case 6:
Console.WriteLine("h");
break;
}

sw.Stop();

Console.WriteLine(sw.ElapsedTicks);

sw.Restart();

if (i == 0)
{
Console.WriteLine("b");
}
else if (i == 1)
{
Console.WriteLine("c");
}
else if (i == 2)
{
Console.WriteLine("d");
}
else if (i == 3)
{
Console.WriteLine("e");
}
else if (i == 4)
{
Console.WriteLine("f");
}
else if (i == 5)
{
Console.WriteLine("g");
}
else if (i == 6)
{
Console.WriteLine("h");
}

sw.Stop();

Console.WriteLine(sw.ElapsedTicks);
Почему переключение регистра происходит медленнее, чем если бы вы могли объяснить?


Подробнее здесь: https://stackoverflow.com/questions/785 ... -sharp-why
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»