Что быстрее для массива из 10 000 элементов: for или forEach? В чём заключается overhead forEach?

Цикл foreach обычно показывает более высокую производительность по сравнению с использованием LINQ, особенно в критичных по скорости сценариях.

Короткий ответ

Что ответить на собеседовании

Цикл foreach обычно показывает более высокую производительность по сравнению с использованием LINQ, особенно в критичных по скорости сценариях. Это связано с тем, что LINQ создает дополнительные объекты, использует отложенное выполнение и может генерировать промежуточные коллекции, что увеличивает накладные расходы. Цикл foreach — это простой итератор без дополнительных абстракций, что делает его быстрее.

Подробный разбор

Ответ с пояснениями

Цикл foreach обычно показывает более высокую производительность по сравнению с использованием LINQ, особенно в критичных по скорости сценариях. Это связано с тем, что LINQ создает дополнительные объекты, использует отложенное выполнение и может генерировать промежуточные коллекции, что увеличивает накладные расходы. Цикл foreach — это простой итератор без дополнительных абстракций, что делает его быстрее.

Пример:

var list = Enumerable.Range(1, 1000000).ToList();

// foreach
int sum1 = 0;
foreach(var item in list) {
    sum1 += item;
}

// LINQ
int sum2 = list.Sum();

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

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку