android 条件语句,关于java:在android开关中哪个条件语句更快或者如果

本问题已经有最佳答案,请猛点这里访问。

这是一个基本的疑问,我没有从我的搜索中得到任何正确的答案。在Android中,哪个条件语句更快?如果或切换,原因是什么?.android编码指南本身建议使用switch而不是if。请澄清我的疑问。

Java中的I/EL与Switter语句的相对性能差异是什么?

选择开关还是如果?

有几个原因我会考虑使用一个开关,而不是如果。实际上,这取决于。

1。速度

switch语句可能比if更快。我写这篇文章可能是因为它取决于您的用例,它能够生成类似于value->函数的东西来调用您范围内的每个值,并通过一次查找找出代码路径。这通常比为if链生成的指令快,因为if中的每个表达式都是单独计算的。

2。易于维护

当你必须组合箱子时,开关看起来更干净。如果会很快失控。与if相比,在switch中很容易添加新案例。

更重要的一点是,else或switch都不是直接汇编语句。所以这取决于编译器将代码转换为程序集的方式。

以最可读的方式编写代码,让编译器处理其余的代码。编译器通常将swith语句转换为查找表,这会带来一些优势。相反,如果你有一些"可能"和"不可能"的条件

从技术上讲,这个问题实际上是建议问题的副本,但是建议问题中的答案有点不好,所以我会重新回答。

switch比if快的原因是:

switch保证要检查的表达式只计算一次,而一个级联if序列可以为每个if重新计算表达式一次,如果表达式涉及一个术语,编译器不能安全地假定它在重复计算过程中保持不变,例如,当简单来说,表达式涉及一个虚拟方法调用。

switch是使用一个特殊的字节码来实现的,它是由虚拟机以非常有效的方式实现的。我不能保证VM究竟是如何实现这个字节码的,但是我在几十年前见过C++编译器在切换标签值表上执行二进制搜索一样聪明,而且我没有理由相信现代VM至少不那么聪明。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值