C# 扁平化条件是否有性能优势?

C# 扁平化条件是否有性能优势?,c#,if-statement,C#,If Statement,例如,假设以下代码: foreach(Car car in Cars) { if(car.Damaged) LogWarning(); else LogInfo(); } 这样做是否更好: foreach(Car car in Cars) { if(car.Damaged) { LogWarning(); continue; } LogInfo(); } 有一个好的编译器。它将产生

例如,假设以下代码:

foreach(Car car in Cars)
{
    if(car.Damaged)
       LogWarning();
    else
       LogInfo();
}
这样做是否更好:

foreach(Car car in Cars)
{
    if(car.Damaged)
    {
       LogWarning();
       continue;
    }

       LogInfo();
}

有一个好的编译器。它将产生同样的结果。所以你想知道编译器是好是坏。最好的方法是查看编译后的代码,并在生成两种不同的内容时启动性能分析

扁平化条件是否有性能优势

也许吧,但这几乎肯定无关紧要。相反,您最终得到的是更难理解和维护的代码,以换取几乎肯定不相关的性能差异

如果你真的想知道,请用两种方式编写代码并正确地分析它。但同样,性能差异不太可能是有意义的,您最终会得到更难阅读的代码。为什么?

图书出版商可以通过使用无页边距的单点字体出版图书,从而使图书更轻、携带更方便、对环境的负担更小。为什么不呢


代码不仅仅针对编译器。这也是为人类准备的,人类必须能够阅读并维护它。

我打赌,在写下你的第二个例子《可憎的东西》(我甚至不确定它是否正确)两周后,你将无法理解它的作用。编写要阅读的代码,并在以后找出真正慢的地方时进行优化。缺少一些大括号。目前,在第二个示例中,
LogInfo()
从未调用过。@drdwilcox-如果您好奇,我没有写这个。它是伪代码,但在第一个示例中我确实有类似的代码,但是Refactor Pro!是说我可以把它弄平。这就是我问的原因。不需要粗鲁。@Marc-LogInfo不应该被调用。如果有警告,它应该继续到下一辆车,而不是记录信息。我加上了缺少的括号。对不起,我不是故意粗鲁。在学习开发软件时有两个错误:早期优化和巧妙的表达。学习避免这些常见错误是教育的重要组成部分,但通常不是在学校里教的。所以我会尽可能在这里教它。