Java switch 足够智能以重新排列?
Java switch smart enough to rearrange?
给定一段带有许多 case 选项的 switch 的热门代码(并且所有都有中断,例如可以重新排列)JVM 会找出频繁的条目以先于其他条目检查它们吗?
个案执行的频率或可能性不在其中。编译器将生成:
- 一个
tableswitch
指令,带有一个关联的跳转table,直接由开关值索引,或
- 一个
lookupswitch
指令,带有 table 个 key/target 对,可以(通常)进行二进制搜索。
给定一段带有许多 case 选项的 switch 的热门代码(并且所有都有中断,例如可以重新排列)JVM 会找出频繁的条目以先于其他条目检查它们吗?
个案执行的频率或可能性不在其中。编译器将生成:
- 一个
tableswitch
指令,带有一个关联的跳转table,直接由开关值索引,或 - 一个
lookupswitch
指令,带有 table 个 key/target 对,可以(通常)进行二进制搜索。