【发布时间】:2009-07-31 09:15:02
【问题描述】:
你好,假设这两种方法:
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();
现在,另一个问题是,上面这两个之间有性能差异吗?
你怎么看?
【问题讨论】:
-
所有“哪个更快?”的答案问题是一样的:尝试两种方式。拿出秒表。那你就知道了。
标签: c# performance list ienumerable