【发布时间】:2015-03-03 16:02:52
【问题描述】:
当我意识到一个奇怪的行为时,我对我的代码执行了分析。 VS2013 为我的每个 continue 关键字分配 6.5 的百分比!请考虑以下快照。
我在这里漏掉了一点吗?
编辑
如果我将continue 替换为if else-if 条件会怎样?
下面是另一个配置文件。我可以假设成本消失了,还是只是分散了?!
【问题讨论】:
-
我怀疑这实际上只是迭代器中对
MoveNext的调用。它本身并不昂贵 - 它只是“跳到循环块的末尾,然后继续下一次迭代”。 -
尝试用
for循环替换你的foreach,看看你是否再次得到相同的数字以继续。 但您必须先通过ToList、ToArray来迭代您的结果 -
相比
ifcontinue是更贵。或者是什么问题? -
@blam 他可以将第二个两个 if 语句更改为 else if 并删除两个继续。这样,代码在功能上是相同的(当然,还有更多 ContainsKey 检查),但它会显示在分析器中。
-
如果您担心性能问题,请放弃
ContainsKey检查。例如,Remove告诉您是否找到并删除了密钥。查找该项目两次是浪费。
标签: c# .net profiling continue