场景
Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化:
Java中使用JMH(Java Microbenchmark Harness 微基准测试框架)进行性能测试和优化_java热点函数
参考以上性能测试工具的使用。
下面针对Java中对switch-case和if-else在速度方面的性能做测试。
实现
编写测试类
运行测试类
测试结果
//Benchmark Mode Cnt Score Error Units
//SwitchVSIfTest.ifTest avgt 5 1.546 ± 0.288 ns/op
//SwitchVSIfTest.switchTest avgt 5 0.443 ± 0.064 ns/op
结论与分析:
从以上结果可以看出(Score 列),switch 的平均执⾏完成时间⽐ if 的平均执⾏完成时间快。
如果从字节码分析可以看出在switch中只取出了⼀次变量和条件进⾏⽐较,⽽if每次都会取出变量和条件进⾏⽐较,
因此if的效率就会⽐ switch 慢很多。
如果加大分支的判断条件,一样可以测试出:
分⽀的判断条件越多,switch 性能⾼的特性体现的就越明显。