ief*_*fpw 1 c# performance hashset
Hashset<string>C#中的这两个枚举之间是否有任何性能差异?
foreach(string value1 in Hashset1) {
}
Run Code Online (Sandbox Code Playgroud)
和
for(int i = 0; i < Hashset1.Count; i++) {
string _value1 = Hashset1.ElementAt(i);
}
Run Code Online (Sandbox Code Playgroud)
是否还有其他快速枚举(性能明智)Hashset?
如果重要,您应该进行基准测试并亲自了解您的方案中更快的解决方案.
在这种情况下,第二个解决方案几乎可以保证较慢,因为ElementAt是一个Enumerable扩展方法.它有一个IList <T>的优化路径,HashSet <T>没有实现.因此它需要从您的IEnumerable <T>枚举N个元素的"正常"路径.
您可以自己弄清楚您的第二个解决方案具有O(N ^ 2)复杂度,而第一个解决方案肯定是O(N).
HashSet还有其他快速枚举吗?不,我不这么认为.这就是IEnumerable的用途.但这对你来说不够快吗?微基准测试是没用的,如果您的性能受到此限制,我会担心.
| 归档时间: |
|
| 查看次数: |
1710 次 |
| 最近记录: |