Какое выражение LINQ быстрееC#

Место общения программистов C#
Ответить
Anonymous
 Какое выражение LINQ быстрее

Сообщение Anonymous »

Привет всем
В следующем коде

Код: Выделить всё

public class Person
{
public string Name { get; set; }
public uint Age { get; set; }

public Person(string name, uint age)
{
Name = name;
Age = age;
}
}

void Main()
{
var data = new List
{ new Person("Bill Gates", 55),
new Person("Steve Ballmer", 54),
new Person("Steve Jobs", 55),
new Person("Scott Gu", 35)};

// 1st approach
data.Where (x => x.Age > 40).ToList().ForEach(x => x.Age++);

// 2nd approach
data.ForEach(x =>
{
if (x.Age > 40)
x.Age++;
});

data.ForEach(x => Console.WriteLine(x));
}
насколько я понимаю, второй подход должен быть быстрее, поскольку он выполняет итерацию каждого элемента один раз, а первый подход выполняется 2 раза:
  • < li>Предложение Where
  • ForEach для подмножества элементов из предложенияwhere.
Однако внутри это может быть этот компилятор в любом случае преобразует 1-й подход во 2-й, и у них будет та же производительность.
Есть предложения или идеи?
Я мог бы выполнить профилирование, как предложено, но я хочу понять, что происходит на уровне компилятора, если эти строки кода для компилятора одинаковы, иначе компилятор будет интерпретировать их буквально.

Подробнее здесь: https://stackoverflow.com/questions/461 ... -is-faster
Ответить

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

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

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

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

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