[英]Do I need to check the Count() of an Enumerable before foreach
[英]Should I check the Count of the collection before using foreach?
在使用foreach枚举内容之前,添加集合计数检查是否会有任何性能改进?
if (users.Count != 0) {
foreach (var user in users) {
// do what snowmen do in summer
}
}
与
foreach (var user in users) {
// do what snowmen do in summer
}
我的函数花费的时间太长,所以我想知道这是否会提高性能甚至使我的函数执行时间减少到我需要的时间。
编辑(执行此循环的上下文):
for (DateTime day = dayStart; day < dayEnd; day = day.addMinutes(30)) {
// Other actions
if (users.Count != 0) {
foreach (var user in users) {
// do what snowmen do in summer
}
}
}
这两个脚本具有相同的结果。
如果计数为零,则Foreach将不执行任何操作,因此不需要if语句。
执行差异(以纳秒为单位)和更大之间的差异并不快,如果列表中有项目,则差异会变慢,但是在两种情况下您都不会注意到任何事情。
第一个版本可能是降级版本。
很有可能foreach中的第一条指令是对空虚的快速测试。 因此,您实质上是在重复两次相同的操作。
在任何情况下,这种“纳米优化”在实践中都没有可见的效果。
(除非在大多数情况下,Count为零。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.