【发布时间】:2019-09-19 18:11:49
【问题描述】:
从功能上讲,这两个循环之间没有区别,但是选择一个循环有什么好处吗?
for (var i = 0; i < loopLimit; i++)
{
}
VS
for (var i = 0; loopLimit > i; i++)
{
}
将较大的数字放在< 符号的左侧与右侧有什么区别?
运行非常基本的测试我注意到将较大的数字放在< 的左侧似乎总是比放在左侧时稍好一些。以下是一小部分结果:
loopLimit > i 平均 41,479,219 滴答声,而 i < loopLimit 平均 41,610,158 滴答声以完成以下测试循环:
void MeasureLoop()
{
const int loopLimit = Int32.MaxValue;
var timer = new Stopwatch();
timer.Start();
for (var i = 0; i < loopLimit; i++)
{
//
}
timer.Stop();
}
和
void MeasureLoop()
{
const int loopLimit = Int32.MaxValue;
var timer = new Stopwatch();
timer.Start();
for (var i = 0; loopLimit > i; i++)
{
//
}
timer.Stop();
}
【问题讨论】:
-
功能上,没有。但是,第一个在 C#、Java 和 C/C++ 中是惯用的。看到第二个的人可能会对为什么这样做感到困惑,并且可能会因此寻找不同的行为,即使没有。
-
如果
i < x比x > i快,我会很惊讶。 -
我投票结束这个问题,因为它是关于理解事物编写方式的人性。这与语法或性能无关。
-
@JesseJohnson - 你专注于错误的领域。您的客户不在乎您生产的产品是否需要 350 毫秒而不是需要 340 毫秒的产品。注意减速的地方(可能不是这个循环),测量和补救。 不要尝试从他人那里学习/神化如何构建高性能软件;特别是如果他们不太可能以高性能为目标。
标签: c# .net performance