Производительность Find () и FirstOrDefault () [дубликат]

Подобный вопрос:

Find () и Where (). FirstOrDefault ()

Получил интересный результат поиска Дианы в большой последовательности простого ссылочного типа, имеющего одностроковое свойство.

using System;
using System.Collections.Generic;
using System.Linq;

public class Customer{
    public string Name {get;set;}
}

Stopwatch watch = new Stopwatch();        
    const string diana = "Diana";

    while (Console.ReadKey().Key != ConsoleKey.Escape)
    {
        //Armour with 1000k++ customers. Wow, should be a product with a great success! :)
        var customers = (from i in Enumerable.Range(0, 1000000)
                         select new Customer
                         {
                            Name = Guid.NewGuid().ToString()
                         }).ToList();

        customers.Insert(999000, new Customer { Name = diana }); // Putting Diana at the end :)

        //1. System.Linq.Enumerable.DefaultOrFirst()
        watch.Restart();
        customers.FirstOrDefault(c => c.Name == diana);
        watch.Stop();
        Console.WriteLine("Diana was found in {0} ms with System.Linq.Enumerable.FirstOrDefault().", watch.ElapsedMilliseconds);

        //2. System.Collections.Generic.List.Find()
        watch.Restart();
        customers.Find(c => c.Name == diana);
        watch.Stop();
        Console.WriteLine("Diana was found in {0} ms with System.Collections.Generic.List.Find().", watch.ElapsedMilliseconds);
    }

Это из-за отсутствия издержек Enumerator в List.Find () или из-за этого плюс что-то еще?

Find() работает почти вдвое быстрее, надеясь.Сеть Команда не отметит это как устаревшее в будущем.

Ответы на вопрос(2)

Ваш ответ на вопрос