for循环中使用continue是否提升性能?两种写法性能对比
两种for循环写法的性能对比分析
这两种写法不存在性能差异,背后的原因很直接:
- 核心耗时操作完全一致:不管用哪种写法,每次循环都会调用一次
map.containsKey(a)——这是整个逻辑里最消耗资源的步骤,调用次数、执行逻辑完全没区别。 - 逻辑等价,JVM会做统一优化:两段代码的业务逻辑是完全等价的,都是当
a不在map中时才执行~~~对应的代码。现代JVM的即时编译器(JIT)会对这类分支结构做优化,不管是用continue跳过还是用!取反后进入代码块,最终生成的机器码几乎没有差异。
说白了,这俩就是同一个逻辑的不同写法,对性能没有任何影响。真正能影响这段代码性能的是你选用的Map实现(比如HashMap的containsKey是O(1),TreeMap是O(logn)),而非这种分支写法的选择。
内容的提问来源于stack exchange,提问作者Febrie
相关产品推荐
相关产品推荐

