Цикл foreach обычно показывает более высокую производительность по сравнению с использованием LINQ, особенно в критичных по скорости сценариях. Это связано с тем, что LINQ создает дополнительные объекты, использует отложенное выполнение и может генерировать промежуточные коллекции, что увеличивает накладные расходы. Цикл foreach — это простой итератор без дополнительных абстракций, что делает его быстрее.
Что быстрее для массива из 10 000 элементов: for или forEach? В чём заключается overhead forEach?
Цикл foreach обычно показывает более высокую производительность по сравнению с использованием LINQ, особенно в критичных по скорости сценариях.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Цикл 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 удобен для декларативного кода и сложных запросов, где производительность не критична.