Menu
Coddy logo textTech

Производительность циклов

Часть раздела Логика и управление потоком путешествия по C# на Coddy. Урок 13 из 66.

Оптимизация производительности цикла может значительно повысить скорость вашего приложения, особенно при работе с большими наборами данных.

Сохраните length коллекции в переменной перед циклом:

int[] numbers = { 1, 2, 3, 4, 5 };
int length = numbers.Length; // Сохранить длину один раз

for (int i = 0; i < length; i++) // Использовать сохранённое значение
{
    Console.WriteLine(numbers[i]);
}

Избегайте повторных вызовов method в условиях цикла, например:

for (int i = 0; i < GetCount(); i++)
{
    // Тело цикла
}

Метод GetCount() вызывается на каждой итерации цикла. Это означает, что если цикл выполняется 1000 раз, GetCount() также будет выполнен 1000 раз, поскольку условие цикла проверяется перед каждой итерацией.

Вот как это сделать правильно:

int count = GetCount();
for (int i = 0; i < count; i++)
{
    // тело цикла
}

GetCount() вызывается только один раз перед началом цикла, и его значение stored в переменной count. Затем цикл использует это сохранённое значение на всех итерациях, устраняя необходимость многократно вызывать method.

Этот approach может ускорить выполнение вашего кода за счёт сокращения избыточных операций, особенно когда method, который был called, выполняет сложные вычисления или обращается к data.

challenge icon

Задание

Легко

Создайте method called optimizedSum, который:

  1. Принимает массив целых чисел в качестве параметра
  2. Вычисляет сумму всех элементов
  3. Реализует оба подхода — Optimized и Unoptimized:
    • Unoptimized: Вызывает array.Length в каждой итерации цикла
    • Optimized: Кэширует length перед циклом
  4. Возвращает result из подхода Optimized

Попробуйте сами

public class OptimizedSum
{
    // Реализуйте метод optimizedSum
    public static int optimizedSum(int[] numbers)
    {
        // Напишите ваш код здесь
        
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и управление потоком

Потренируйтесь самостоятельно: Онлайн-компилятор C#