我正在尝试优化集合(IEnumerable<T>
)中的计数元素
由于此数据是从内存缓存中加载的,因此没有必要切换到使用IQueryable<T>.Count()
(为了进行简单的数据库调用SELECT count(1) FROM TableT
而不是遍历IEnumerable<T>
的整个列表)
所以我只是有一个想法,也许遍历值类型(例如int)的集合(IEnumerable)可能比遍历引用类型的集合要快[]
myEnumerable.Count();
替换为:
myEnumerable.Select(el => el.Id).Count();
不知道它是否正确,也不确定如何正确测试它,但是首先简单的估计表明,在IEnumerable<int>
上进行迭代比在IEnumerable<some-business-object>
上进行迭代要快一些(如5-10%)>
所以,问题是-遍历集合是值类型还是引用类型,是否有任何不同?
我正在尝试优化集合中的计数元素(IEnumerable
myEnumerable.Count();
替换为:
myEnumerable.Select(el => el.Id).Count();