_continue_ 关键字在 c# 中的计算成本高吗?

Is _continue_ keyword computationally expensive in c#?

当我意识到一个奇怪的行为时,我对我的代码进行了分析。 VS2013 为我的每个继续关键字分配了 6.5 的百分比!请考虑以下快照。

我是不是漏掉了一点?

编辑 如果我用 if else-if 条件替换 continue 会怎样? 下面是另一个配置文件。我可以假设成本消失了,还是只是分摊了?!

没有; continue 通常映射到无条件分支(brbr.s)。这里唯一的 "expense" 是 接下来会发生什么 - 在您的情况下,MoveNext()that 所做的完全特定于您的序列。

我会专注于提高效率
在现实生活中,效率更高 运行 更快

借用评论
我可能会更快让它在 add
上抛出异常 让它在添加

时抛出异常可能不会更快
foreach (var lamda in ...
{
     if (lamda.phi == true)
     {
         ...
     }
     else if (_left.Remove(lamda.Ati))
     {}
     else 
     {
        try 
        {
            _determined.Add(lamda.Ati, lamda.phi)
            _righEnds --; 
        }
        catch (ArgumentException ex)
        {
            // do nothing
        }   
     }
}

上 _determined.Add lamda.phi 永远是 false
为什么不是 HashSet?
HashSet.Add returns 布尔值