Привет всем
В следующем коде
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<Person>{ 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-й подход должен быть более быстрым, поскольку он повторяет каждый элемент один раз, а первый подход выполняется 2времена:
- Где предложение
- ForEach для подмножества элементов из предложения where.
Однако внутренне может случиться так, что компилятор переводит 1-й подход во 2-йв любом случае, и они будут иметь одинаковую производительность.
Любые предложения или идеи?
Я мог бы сделать профилирование, как предложено, но я хочу понять, что происходит на уровне компилятора, если они в строкахкод одинаков для компилятора, иначе компилятор будет относиться к нему буквально.
Заранее спасибо за помощь.