Hi giả những 2 phương pháp:C# Danh sách <T> vs IEnumerable <T> hiệu suất câu hỏi
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;
}
Cái nào là nhanh hơn? Khi tôi nhìn vào phương pháp đầu tiên, tôi thấy rằng bộ nhớ được phân bổ cho Danh sách, theo ý kiến của tôi thì nó không cần thiết. Phương thức IEnumerable có vẻ nhanh hơn với tôi.
Ví dụ, giả sử bạn gọi
int a = GetProviderForType(myType).Count;
int b = GetProviderForType1(myType).Count();
Bây giờ, một vấn đề khác là, có một sự khác biệt về hiệu năng giữa những 2 ở trên?
Bạn nghĩ sao?
Câu trả lời cho tất cả "nhanh hơn?" câu hỏi là như nhau: Hãy thử cả hai cách. Lấy ra một đồng hồ bấm giờ. Sau đó, bạn sẽ biết. –