Привет, предположим, что эти 2 метода:
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;
}
Какой из них быстрее? Когда я смотрю на первый метод, я вижу, что память выделена для List, что, на мой взгляд, не нужно. Метод IEnumerable кажется мне быстрее.
Например, предположим, что вы вызываете
int a = GetProviderForType(myType).Count;
int b = GetProviderForType1(myType).Count();
Теперь еще одна проблема: существует ли разница в производительности между этими двумя выше?
Как вы думаете?