If statement “哪个更好?”;嵌套if";或;if和多个else if";?

If statement “哪个更好?”;嵌套if";或;if和多个else if";?,if-statement,optimization,If Statement,Optimization,哪个代码段的性能更好 假设“a”和“b”是布尔变量 第一个代码段 if(a&b){ //路径1 }若否(a){ //路径2 }若否(二){ //路径3 }否则{ //路径4 } 第二个代码段 if(a){ 如果(b){ //路径1 }否则{ //路径2 } }否则{ 如果(b){ //路径3 }否则{ //路径4 } } 第二个代码段似乎做的工作更少,但我不知道嵌套“if conditions”是否有副作用。在必要时避免嵌套。拥有深层语法树会增加失败的可能性。通常,除非重载,否则您提供的这些

哪个代码段的性能更好

假设“a”和“b”是布尔变量

第一个代码段

if(a&b){
//路径1
}若否(a){
//路径2
}若否(二){
//路径3
}否则{
//路径4
}
第二个代码段

if(a){
如果(b){
//路径1
}否则{
//路径2
}
}否则{
如果(b){
//路径3
}否则{
//路径4
}
}

第二个代码段似乎做的工作更少,但我不知道嵌套“if conditions”是否有副作用。

在必要时避免嵌套。拥有深层语法树会增加失败的可能性。通常,除非重载,否则您提供的这些运算符不会带来性能问题。

在必要时避免嵌套。拥有深层语法树会增加失败的可能性。通常,除非重载,否则您提供的这些运算符不会带来性能问题

哪个代码段的性能更好

理想的;这两个代码段的性能将是相同的,因为编译器将优化您为特定计算机编写的任何内容,无论哪种形式最快。在这种情况下,无论哪个更好,都是更容易阅读和维护的

请注意(如果由于编译器的优化器而导致性能不相同),编译它的特定计算机可能与您使用的计算机完全不同;基准测试它还可以为您提供在同一台计算机上的其他使用错误的结果(例如,如果基准测试中的CPU可以预测分支,但在基准测试之外的正常使用中无法预测分支,那么基准测试的结果将不会指示基准测试之外的性能)。换言之;(如果性能因编译器的优化器而不同)不能保证性能基准测试会告诉您任何有关性能的有用信息

哪个代码段的性能更好

理想的;这两个代码段的性能将是相同的,因为编译器将优化您为特定计算机编写的任何内容,无论哪种形式最快。在这种情况下,无论哪个更好,都是更容易阅读和维护的


请注意(如果由于编译器的优化器而导致性能不相同),编译它的特定计算机可能与您使用的计算机完全不同;基准测试它还可以为您提供在同一台计算机上的其他使用错误的结果(例如,如果基准测试中的CPU可以预测分支,但在基准测试之外的正常使用中无法预测分支,那么基准测试的结果将不会指示基准测试之外的性能)。换言之;(如果由于编译器的优化器而导致性能不一致)无法保证性能基准测试会告诉您任何关于性能的有用信息

只要做一个1到1000万次的循环,然后使用一个“如果”策略计时,然后使用另一个-你就会得到答案。只要做一个1到1000万次的循环,然后使用一个“如果”策略计时,然后使用另一个-你就会得到答案。