C# Оптимизация компилятораC#

Место общения программистов C#
Ответить
Anonymous
 C# Оптимизация компилятора

Сообщение Anonymous »

Мне интересно, может ли кто -нибудь объяснить мне, что именно компилятор может сделать для меня, чтобы наблюдать за такими экстремальными различиями в производительности для простого метода. < /p>

public static uint CalculateCheckSum(string str) {
char[] charArray = str.ToCharArray();
uint checkSum = 0;
foreach (char c in charArray) {
checkSum += c;
}
return checkSum % 256;
}
< /code>

Я работаю с коллегой, выполняющим некоторые тесты /оптимизации для приложения для обработки сообщений. Выполнение 10 миллионов итераций этой функции с использованием той же входной строки заняло около 25 секунд в Visual Studio 2012, однако, когда проект был построен с использованием опции «Оптимизировать код», включенный в тот же код, выполненный за 7 секунд для тех же 10 миллионов итераций. < /p>

Мне очень интересно понять, что компилятор делает за кулисами, чтобы мы могли увидеть увеличение производительности в 3 раза для, казалось бы, невинного блока кода Таким образом.class Program
{
public static uint CalculateCheckSum(string str)
{
char[] charArray = str.ToCharArray();
uint checkSum = 0;
foreach (char c in charArray)
{
checkSum += c;
}
return checkSum % 256;
}

static void Main(string[] args)
{
string stringToCount = "8=FIX.4.29=15135=D49=SFS56=TOMW34=11752=20101201-03:03:03.2321=DEMO=DG00121=155=IBM54=138=10040=160=20101201-03:03:03.23244=10.059=0100=ARCA10=246";
Stopwatch stopwatch = Stopwatch.StartNew();
for (int i = 0; i < 10000000; i++)
{
CalculateCheckSum(stringToCount);
}
stopwatch.Stop();
Console.WriteLine(stopwatch.Elapsed);
}
}
< /code>

Запуск в отладке с оптимизацией, я вижу 13 секунд, на я получаю 2 секунды. < /p>

Запуск в релизе с оптимизацией от 3,1 секунды и на 2,3 секунды.

Подробнее здесь: https://stackoverflow.com/questions/214 ... imizations
Ответить

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

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

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

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

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