Pergunta de desempenho C # List <T> vs IEnumerable <T>

Oi suponho que esses dois métodos:

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;              
        }

Qual deles é mais rápido? Quando eu olho para o primeiro método, vejo que a memória é alocada para List, o que na minha opinião não é necessário. oIEnumerable o método parece ser mais rápido para mim.

Por exemplo, suponha que você ligue

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

Agora, outro problema é, existe uma diferença de desempenho entre esses dois acima?

O que você acha?

questionAnswers(4)

yourAnswerToTheQuestion