当我意识到一种奇怪的行为时,我对我的代码执行了分析。 VS2013为每个继续关键字分配6.5的百分比!请考虑以下快照。
我在这里错过了一点吗?
修改
如果我将continue
替换为if else-if
条件,该怎么办?
以下是另一个档案。我可以假设成本已经消失,或者它只是分散了吗?!
答案 0 :(得分:1)
没有; continue
通常映射到无条件分支(br
或br.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