加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

groovy’witch’与’if’表现

发布时间:2020-12-14 16:32:32 所属栏目:大数据 来源:网络整理
导读:我知道在 Java中,当你遇到很少的情况时,不应该使用switch语句,在这种情况下,最好使用if else if. 对于groovy来说也是如此吗? 哪个在这两个代码之间更高效? myBeans.each{ switch it.name case 'aValue': //some operation case 'anotherValue: //other ope
我知道在 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不限于整数值,并且具有许多额外的语义,因此编译器不能使用该工具.编译器生成一系列比较,就像它对serial if块一样.

但是,每次比较都会调用ScriptBytecodeAdapter.isCase(switchValue,caseExpression).这始终是对caseExpression对象上的isCase方法的动态方法调用.该调用可能比ScriptBytecodeAdapter.compareEqual(左,右)更昂贵,后者被称为if比较.

因此在Groovy中,如果是块,则交换机通常比串行更昂贵.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读