当前位置: 首页 > 面试题库 >

if else vs Java中的开关性能

洪增
2023-03-14
问题内容

我想知道使用if语句或switch之间是否有效率差异。例如:

if(){
//code
}
else if(){
//code
}
else{
//code
}

我认为,即使第一个if语句为true,程序也需要检查所有if语句。

switch(i){

case 1:
//code
break;
case 2:
//code
break;

但是在开关中,有一个break命令。我的对吗?如果没有,您能否解释一下两者之间的效率差异?


问题答案:

Switch性能优于if else切换时的性能。一旦评估了开关,它就会知道需要执行哪种情况,但是在if else最坏的情况下必须经历所有情况。

列表条件越长,切换性能越好,但是对于较短的列表(仅两个条件),它也会变慢

从为什么切换比如果更快

通过切换,JVM加载要比较的值并遍历值表以找到匹配项,这在大多数情况下更快



 类似资料:
  • 问题内容: 这可能是一个愚蠢的问题,但是作为PHP的新手,我想知道在HTML模板代码中频繁打开和关闭PHP标签是否存在任何与性能相关的问题,如果是,那么最佳实践是什么?使用PHP标签? 我的问题不是关闭标签的重要性/正确性,或者不是哪种类型的代码比另一种更具可读性,而是关于文档的解析/执行方式及其对性能的影响。 为了说明,请考虑以下两个极端: 混合使用PHP和HTML标签: 分离PHP和HTML标

  • 我正在尝试使用一个与Qt中的Android Switches等效的元素。我在QML中找到了一个ToggleSwitch,但在实际的CQt库中一无所获。我只是错过了什么,还是我必须自己重新实现这个小部件?

  • 问题内容: 我有2个JPanels和1个JFrame,当我单击一个按钮时,我试图在面板之间切换。我不想使用CardLayout,因为我想要不同的面板,并且对于CardLayouts我只能为两个面板使用相同的按钮。我的代码是: } 问题答案: 这是一个帮助您的小例子: 最新编辑 显示您的选择,内部

  • 本文向大家介绍关于java开发的性能问题总结(必看),包括了关于java开发的性能问题总结(必看)的使用技巧和注意事项,需要的朋友参考一下 1:hibernate的hql如何处理分表问题?如果不能处理,hibernate是不是比mybatis的扩展性差,灵活性差。 2:where in()效率真的很低吗? 3:spring事物配置,如何配置子事物的异常不会让主事物回滚? 4:数据库做删除操作,会影

  • 问题内容: 为了简单起见,最好在不占用大量CPU的前提下使用该功能,或者该走的路要走吗? 问题答案: 我认为您正在进行简单的优化。regexp表达式的计算是如此昂贵,以至于结果被缓存起来,希望将来可以再次使用。如果您实际使用不同的字符串进行转换,您会发现适度的翻译自然是更快的,因为它是其专门功能。 这是我的示例,在上运行: 于: 结论:总的来说,我怀疑会赢。

  • 问题内容: 在Go中使用类型断言/类型切换作为运行时类型发现的方法有多慢? 我听说例如在C / C ++中,在运行时发现类型会降低性能。要绕过它,通常将类型成员添加到类中,以便可以与这些类型进行比较而不是强制转换。 我在整个www上都没有找到明确的答案。 这是我要问的一个示例- 与其他类型检查方法(如上面提到的或我不知道的其他方法)相比,这是否算 快 ? 问题答案: 编写基准测试来检查它很容易:h