猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
Java中if/etc与Switch语句的相对性能差异是什么?
Java中if/etc与Switch语句的相对性能差异是什么?
考虑到我的web应用程序的性能,我想知道“if/etc”或Switch语句中哪一个在性能方面更好?
回首忆惘然
浏览 373
回答 3
3回答
MMTTMM
我完全同意这样的观点,即过早优化是应该避免的。但确实,JavaVM有特殊的字节码,可以用于Switch()的字节码。看见Wm Spec (查找开关和表巫术)因此,如果代码是性能CPU图的一部分,则可能会提高一些性能。
0
0
0
蝴蝶刀刀
如果/否则或切换将是性能问题的根源,这是非常不可能的。如果您有性能问题,您应该首先进行性能分析,以确定慢点在哪里。过早优化是万恶之源!然而,通过Java编译器优化,可以讨论开关相对于if/etc的相对性能。首先请注意,在Java中,开关语句在非常有限的域-整数上运行。通常,您可以按以下方式查看开关语句:switch (<condition>) { case c_0: ... case c_1: ... ... case c_n: ... default: ...}哪里c_0, c_1.和c_N是开关语句的目标整数,以及<condition>必须解析为整数表达式。如果这个集合是“稠密的”-也就是说,(max(C)i)+1-min(C)i)/n>α,其中0<k<α<1,其中k大于某些经验值,可以生成跳转表,这是高效的。如果这个集合不是很密集,但是n>=β,那么二进制搜索树可以在O(2*log(N)中找到目标,这仍然是有效的。对于所有其他情况,开关语句与if/etc语句的等效序列完全一样有效。α和β的精确值取决于许多因素,并由编译器的代码优化模块决定。最后,当然,如果<condition>不是整数,开关语句是完全无用的。
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续