例如,让我们考虑以下两个代码:
for (i = 0; i < 1000; i++)
{
if ( i % 2 != 0)
{
continue;
}
else
{
...
}
}
和
for (i = 0; i < 1000; i++)
{
if (i % 2 == 0)
{
...
}
}
两者都会导致相同的结果。那么哪一个使用?哪一个更好?这两者之间是否存在显着的性能差异?让我们看看你们看到了什么。我喜欢我在这里看到的关于这些事情的讨论。这可能会导致更好的代码编写和更好的执行时间。我发布了这个问题,因为我找不到答案。如果我没有找到答案,我可能会在将来发布另一个这样的人。
P.S。什么是在没有它的情况下继续使用循环的目的是什么?
答案 0 :(得分:5)
在这个具体的例子中?使用continue
没有任何意义。
正如您所提到的,两个代码示例都会产生完全相同的结果。并且它们都不会比另一个快得多。
您决定选择哪一个应该基于可读性和清晰度,而不是某种误导的“优化”尝试。考虑到这一点,第二个是远更清晰。我真的质疑在实际代码库中使用第一个的人的编程方法。
作为基本准则,当单个if-else
执行时,请勿使用if
。在这种情况下,您要比较!=
,然后使用else
语句查找相反的内容 - 这几乎就像说!(!=)
,这会产生双重否定。很难阅读或理解。一般来说,您应该尝试在if
语句中评估正条件,而不是消极的条件,以防止这种情况。
并且没有理由发布与此类似的其他问题。所有答案都是一样的。忽略任何可能的性能差异(如果一个甚至存在,这是非常不可能的,给定优化编译器),并关注哪个版本最适合作为必须阅读它的人。请忽略任何向您提供相反建议的人。
答案 1 :(得分:0)
我绝对不会考虑第一个选项,因为在我看来它会为流添加不必要的代码路径。我认为它不会在性能方面带来更好的结果,但如果你想确保你可以检查IL代码。
答案 2 :(得分:-1)
没有足够的差异来证明使用丑陋的形式。
比这个特定实例中的任何一个都好
For(i = 0; i < 1000; i+=2)
{
...
}
因为根本不需要进行可分性检查。