我一直在 ExpressionVisitor
中挖掘 .NET
,我发现了这个 for
循环,
for (int i = 0, n = nodes.Count; i < n; i++)
{
Expression node = Visit(nodes[i]);
if (newNodes != null)
{
newNodes[i] = node;
}
else if (!object.ReferenceEquals(node, nodes[i]))
{
newNodes = new Expression[n];
for (int j = 0; j < i; j++)
{
newNodes[j] = nodes[j];
}
newNodes[i] = node;
}
}
现在有什么特别的原因吗:
i = 0, n = nodes.Count; i < n
?i = 0; i < nodes.Count
中没有的任何性能提升吗? 最佳答案
当您多次使用同一个语句时,最好使用一个变量。
这里,nodes.Count
用于如下两个地方,因此使用变量而不是执行相同的语句两次。
for (int i = 0, n = nodes.Count; i < n; i++) {
和,
newNodes = new Expression[n];
注意:正如评论中所讨论的,性能差异完全可以忽略不计。