Многие любят валить вину за то, что их код медленно работает, на .Net Framework. А между тем во многих случаях ситуацию можно исправить поменяв пару строк кода.
Рассмотрю практический пример функции по обработке фотографии. Есть некий цикл, который обходит все пикселы изображения и преобразует их хитрым образом.
Вначале пару слов о границах цикла. Хотя в первой версии фреймворка и были какие-то проблемы с функцией Length, то сейчас все хорошо. Главное, чтоб это не была какая-нибудь хитрая функция, которая выполняется на каждой итерации цикла и замедляет его в несколько раз.
{
//Обработка
}
Я вообще использую следующую конструкцию, так как цикл распараллелен на несколько ядер (пост):
int i2 = GetLastIndex();
for (i=i1; i<=i2; i++)
{
//Обработка
}
Далее за границы цикла стоит по возможности вынести все операции по выделению памяти. Кроме того при вызове функций внутри цикла, по возможности нельзя дублировать данные, особенно массивы.
Пример плохого кода: