条件样式不断变化的 IF 性能
IF Performance with changing condition style
我有这个代码
void test()
{
If (condition)
{
doSomthing();
}
}
test();
doSomethingMore();
将其更改为以下方面是否有任何性能影响:
void test()
{
If (!condition)
{
return;
}else
doSomthing();
}
}
test();
doSomethingMore();
为什么??
你真的问错了问题。性能在这里完全无关紧要。任何优化编译器都会使其绝对无关紧要,可能会为两种样式生成完全相同的二进制文件。
不,事实上真正的问题是哪个代码片段更具可读性。你的同胞是以后必须阅读和理解你的代码的人。而且,如果你特别不幸,以后必须阅读和理解你的代码的人之一甚至可能是你。因此,编写逻辑结构化且易于阅读的代码比担心这样的微优化要重要得多。让编译器处理这些。
那么,哪个更具可读性呢?绝对是第一个。如果condition
为 true,则将调用 doSomething()
函数。更容易理解。
通常,if
语句应评估正命名的条件。大多数情况下,您应该尽量避免使用!
符号,因为它在扫描代码时很容易错过,并且可能会使您的代码被读取为双重否定。通常还应避免从函数(即 return
语句)中有多个退出点。您应该能够从上到下读取该函数,并确切地看到它的作用,而无需跳来跳去。第二个代码片段违反了这两个规则,并且几乎没有其他帮助证明首选它而不是第一个代码片段。
对于任何现代编译器来说,像这样的小改动极不可能产生任何影响。优化器已经执行了许多小的优化(以及几个大的优化)。
在您的特定示例中,即使使用完全未优化的编译器也绝对不会有任何区别。您所做的只是添加一个额外的显式"返回"指令,该指令有时会在函数结束时执行,而不是隐含的返回。
您的代码最终可能会大四个字节,但执行时间是相同的。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- OpenMP阵列性能较差
- 递归列出所有目录中的C++与Python与Ruby的性能
- if-else 与三元函数调用性能
- 性能:否则如果 vs if 在已经返回的函数中
- C++:if 内部循环的性能影响
- 从编译器优化和代码性能的角度来看,"if constexpr"与"if"
- 递归可变参数函数调用对简单 if.else 语句的性能
- 在相同条件下扩展多个"if"可提高性能
- .NET 4,C ,IF..Else和Switch()如何影响性能
- 如何在 c++ 中提高 IF 语句性能
- if/else vs虚拟功能:设计性能
- 由于if语句,C++的性能损失巨大
- "if if"与"if else if"的性能差异
- else if(cond){}和else {if(cond){}}的性能差异
- "if"语句对性能的影响有多大?
- 我是否应该使用"if"语句统一两个相似的内核,冒着性能损失的风险?
- 条件样式不断变化的 IF 性能
- 嵌套if VS . 2独立if——性能方面
- 函数指针数组优于if块的性能优势