Hi załóżmy te 2 metod:C# Lista <T> vs pytanie IEnumerable <T> wydajności
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 z nich jest szybszy? Kiedy patrzę na pierwszą metodę, widzę, że pamięć jest przydzielona dla List, co moim zdaniem nie jest potrzebne. Metoda IEnumerable wydaje mi się szybsza.
Na przykład, załóżmy, że nazywają
int a = GetProviderForType(myType).Count;
int b = GetProviderForType1(myType).Count();
Teraz jest inny problem, czy istnieje różnica wydajności pomiędzy tymi 2 powyżej?
Co myślisz?
Odpowiedź na wszystkie pytania "która jest szybsza?" pytania są takie same: Spróbuj w obie strony. Wyjdź ze stopera. Wtedy będziesz wiedzieć. –