_conue_关键字在c#中的计算成本是否昂贵?

时间:2015-03-03 16:02:53

标签: c# .net profiling continue

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

我在这里错过了一点吗?

enter image description here

修改 如果我将continue替换为if else-if条件,该怎么办? 以下是另一个档案。我可以假设成本已经消失,或者它只是分散了吗?!

enter image description here

2 个答案:

答案 0 :(得分:1)

没有; continue通常映射到无条件分支(brbr.s)。这里唯一的“费用”是接下来会发生什么 - 在您的情况下,MoveNext() 所做的完全针对您的序列。

答案 1 :(得分:1)

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

借鉴意见
我可能会更快让它在添加上抛出异常 让它在添加

上抛出异常可能不会更快
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总是假的 为什么不是HashSet?
HashSet.Add返回一个bool