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?