当前位置: 首页 > 知识库问答 >
问题:

开关盒顺序会影响速度吗?[重复]

姚俊材
2023-03-14

我试图谷歌这个,但运气不好。

我有一个很大的转变,有些病例明显比其他病例更常见。

所以我想知道订单是否真的保持原样,并且“上层”案例在“下层”案例之前得到测试,因此评估得更快。

我想保留我的订单,但如果这会影响速度,那么重新排序分支将是一个好主意。

举例说明:

switch (mark) {
        case Ion.NULL:
            return null;

        case Ion.BOOLEAN:
            return readBoolean();

        case Ion.BYTE:
            return readByte();

        case Ion.CHAR:
            return readChar();

        case Ion.SHORT:
            return readShort();

        case Ion.INT:
            return readInt();

        case Ion.LONG:
            return readLong();

        case Ion.FLOAT:
            return readFloat();

        case Ion.DOUBLE:
            return readDouble();

        case Ion.STRING:
            return readString();

        case Ion.BOOLEAN_ARRAY:
            return readBooleans();

        case Ion.BYTE_ARRAY:
            return readBytes();

        case Ion.CHAR_ARRAY:
            return readChars();

        case Ion.SHORT_ARRAY:
            return readShorts();

        case Ion.INT_ARRAY:
            return readInts();

        case Ion.LONG_ARRAY:
            return readLongs();

        case Ion.FLOAT_ARRAY:
            return readFloats();

        case Ion.DOUBLE_ARRAY:
            return readDoubles();

        case Ion.STRING_ARRAY:
            return readStrings();

        default:
            throw new CorruptedDataException("Invalid mark: " + mark);
    }

共有1个答案

鲜于华容
2023-03-14

对switch语句重新排序没有任何效果。

查看Java字节码规范,可以将开关编译为查找开关表开关指令,打开intlookupswitch总是以排序顺序使用可能的值进行编译,因此对代码中的常量重新排序将不再重要,tableswitch只是相对于指定偏移量有一个可能的跳转数组,所以它也不关心原始顺序。

看见http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.查找开关和http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.请查看详细信息。

 类似资料:
  • 问题内容: 我试图用谷歌搜索,但是没有运气。 我的开关很大,有些情况 显然 比其他情况 更常见 。 因此,我想知道订单是否真正保持原状,并且在“下”之前先测试“上”案例,因此可以更快地进行评估。 我想保留订单,但是如果它影响速度,那么重新排序分支将是一个好主意。 例如: 问题答案: 对switch语句重新排序没有任何效果。 查看Java字节码规范,可以将a编译为a 或一条指令,然后打开a 。A 总

  • 我有一个有600万行的表,我需要查找六列来选择项目。所以我创建了一个包含六列的索引。 更改索引中列的顺序是否影响查询速度? 查询的速度是否取决于每列所具有的唯一项的数量?或者列上的条件具有的可能结果的总数? 我尝试重新排序索引中的列,查询速度似乎有一些重大变化 表:pic_tag_relations 列: tag_id(int)(1-1,000,000)(基数:最低) contrast_score

  • 问题内容: 到目前为止,我一直只使用scrapy并编写自定义类来使用ajax处理网站。 但是,如果我要使用scrapy-splash,据我所知,它会在javascript之后刮擦呈现的html,那么对我的抓取工具的速度会产生重大影响吗? 用scrapy刮擦香草html页面与使用scrapy-splash渲染javascript html所花费的时间之间的比较是什么? 最后,scrapy-splas

  • 问题内容: 我知道CSS选择器具有最高的优先级(即< )。 我还知道,如果事物具有相同的特异性,那么最后一个调用的语句将具有优先权: HTML类在DOM元素上的排序是否会影响语句优先级? 问题答案: 我不得不不同意乔恩和沃森的回答,因为… 是的, 可以 (取决于声明) 您的问题是: CSS类在DOM元素上的排序是否会影响语句优先级? 哪个确实取决于所讨论的语句。 HTML排序通常不重要 当直接调用

  • 问题内容: 例如,我喜欢在Redis中使用冗长的名称。 这样可以吗?还是会影响性能? 问题答案: 您正在谈论使用的密钥并没有那么长。 您提供的示例键用于一个集合,集合查找方法为O(1)。集合(SDIFF,SUNION,SINTER)上更复杂的操作是O(N)。可能的是,与使用较长的键相比,填充是更昂贵的操作。 Redis带有一个称为的基准实用程序,如果您修改src / redis-benchmark