C# List<T> vs IEnumerable<T> question de la performance

Hi supposons que ces 2 méthodes:

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

Lequel est le plus rapide? Quand je regarde la première méthode, je vois que la mémoire est allouée pour la Liste, ce qui à mon avis il n'est pas nécessaire. Le IEnumerable méthode semble être plus rapide pour moi.

Par exemple, supposons que vous appelez

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

Maintenant, une autre question est, est-il une différence de performance entre ces 2 ci-dessus?

Qu'en pensez-vous?

La réponse à tout "qui est le plus rapide?" questions est la même: Essayez les deux méthodes. Sortir d'un chronomètre. Alors vous saurez.

OriginalL'auteur PaN1C_Showt1Me | 2009-07-31