C # List <T> vs IEnumerable <T> pytanie dotyczące wydajności

Cześć, przypuśćmy, że te dwie metody:

private List<IObjectProvider> GetProviderForType(Type type)
        {
            List<IObjectProvider> returnValue = new List<IObjectProvider>();

            foreach (KeyValuePair<Type, IObjectProvider> provider in _objectProviders)
            {
                if ((provider.Key.IsAssignableFrom(type) ||
                    type.IsAssignableFrom(provider.Key)) &&
                    provider.Value.SupportsType(type))
                {
                    returnValue.Add(provider.Value);
                }
            }
            return returnValue;
        }

private IEnumerable<IObjectProvider> GetProviderForType1(Type type)
        {
            foreach (KeyValuePair<Type, IObjectProvider> provider in _objectProviders)
                if ((provider.Key.IsAssignableFrom(type) ||
                    type.IsAssignableFrom(provider.Key)) &&
                    provider.Value.SupportsType(type))

                    yield return provider.Value;              
        }

Który jest szybszy? Kiedy patrzę na pierwszą metodę, widzę, że pamięć jest przydzielona do List, co moim zdaniem nie jest potrzebne. TheIEnumerable metoda wydaje mi się szybsza.

Załóżmy na przykład, że dzwonisz

int a = GetProviderForType(myType).Count;
int b = GetProviderForType1(myType).Count();

Kolejną kwestią jest to, czy istnieje różnica wydajności pomiędzy tymi 2 powyżej?

Co myślisz?

questionAnswers(4)

yourAnswerToTheQuestion