gpt4 book ai didi

performance - 常规 'switch' 与 'if' 性能

转载 作者:行者123 更新时间:2023-12-04 03:12:55 28 4
gpt4 key购买 nike

我知道在 Java 中,当你的情况很少时不应该使用 switch 语句,在这种情况下最好使用 if else if .

对于 groovy 也是如此吗?

这两个代码哪个性能更好?

myBeans.each{
switch it.name
case 'aValue':
//some operation
case 'anotherValue:
//other operations
}

或者:
myBeans.each{
if(it.name == 'aValue'){
//some operation
}
else if (it.name =='anotherValue){
//other operations
}
}

最佳答案

在 Java 中,“switch”比串行 if 块更有效,因为编译器会生成 tableswitch可以从跳转表中确定目标的指令。

在 Groovy 中,switch 不限于整数值,并且具有许多附加语义,因此编译器无法使用该功能。编译器生成一系列比较,就像它对串行 if 块所做的一样。

然而,ScriptBytecodeAdapter.isCase(switchValue, caseExpression)每次比较都会调用。这始终是对 isCase 的动态方法调用caseExpression 对象上的方法。该电话可能比 ScriptBytecodeAdapter.compareEqual(left, right) 贵这被称为 if 比较。

所以在 Groovy 中,switch 通常比串行 if 块更昂贵。

关于performance - 常规 'switch' 与 'if' 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12112189/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com