Java 中 if/else 与 switch 语句的相对性能差异是什么?

2024-03-16

担心我的 Web 应用程序的性能,我想知道“if/else”或 switch 语句中哪一个在性能方面更好?


我完全同意过早优化是应该避免的观点。

但 Java VM 确实有可用于 switch() 的特殊字节码。

See WM Spec http://docs.oracle.com/javase/specs/ (查找开关 http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10.1.9.lookupswitch and 桌面开关 http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.10.1.9.tableswitch)

因此,如果代码是 CPU 性能图的一部分,则可能会带来一些性能提升。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java 中 if/else 与 switch 语句的相对性能差异是什么? 的相关文章

  • 如何在java中将数组值排序为循环格式?

    我的数组值如下 String value 1 2 3 4 5 6 7 8 9 10 假设如果我将值 5 传递给 tat 数组 它应该按如下顺序排序 5 6 7 8 9 10 1 2 3 4 怎么办 有人帮忙吗 感谢你 你需要的就是所谓的轮换
  • 大数组上的 SSE 性能较慢

    我是 SSE 编程新手 所以我希望有人可以帮助我 我最近使用 GCC SSE 内在函数实现了一个函数来计算 32 位整数数组的总和 下面给出了我的实现代码 int ssum const int d unsigned int len stat
  • eclipse行号状态行贡献项是如何实现的?

    我需要更新状态行编辑器特定的信息 我已经有了自己的实现 但我想看看 eclipse 贡献项是如何实现的 它显示状态行中的行号 列位置 谁能指点一下 哪里可以找到源代码 提前致谢 亚历克斯 G 我一直在研究它 它非常复杂 我不确定我是否了解完
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • 如何在 JPQL 或 HQL 中进行限制查询?

    在 Hibernate 3 中 有没有办法在 HQL 中执行相当于以下 MySQL 限制的操作 select from a table order by a table column desc limit 0 20 如果可能的话 我不想使用
  • java inputstream 打印控制台内容

    sock new Socket www google com 80 out new BufferedOutputStream sock getOutputStream in new BufferedInputStream sock getI
  • 如何在单个查询中搜索 RealmObject 的 RealmList 字段

    假设我有一堂课 public class Company extends RealmObject private String companyId private RealmList
  • 如何检查某个元素是否存在于一组项目中?

    In an ifJava中的语句如何检查一个对象是否存在于一组项目中 例如 在这种情况下 我需要验证水果是苹果 橙子还是香蕉 if fruitname in APPLE ORANGES GRAPES Do something 这是一件非常微
  • 如何在java中将日期格式从YYMMDD更改为YYYY-MM-DD? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我从机器可读代码中获取日期格式为 YYMMDD 如何将其更改为 YYYY MM DD 例如我收到 871223 YYMMDD 我想把它改成
  • PhoneGap 1.4 封装 Sencha Touch 2.X - 性能怎么样?

    我正在构建一个多平台平板电脑应用程序 仅使用其 Webview 使用 Phonegap 1 4 对其进行包装 然后使用 Sencha Touch 2 框架发挥我的魔力 我所说的多平台是指 iOS 5 X 和 Android 3 0 目前 到
  • 从jar中获取资源

    我有包含文件的 jar myJar res endingRule txt myJar wordcalculator merger Marge class 在 Marge java 中我有代码 private static final Str
  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 轻松的反应

    我有一个与这里描述的类似的案例 动态更改RESTEasy服务返回类型 https stackoverflow com questions 3786781 dynamically change resteasy service return
  • 在 Spring 上下文中查找方法级自定义注释

    我想知道的是 所有的类 方法Spring http en wikipedia org wiki Spring Framework注释为 Versioned的bean 我创建了自定义注释 Target ElementType METHOD E
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • Hibernate 本机查询 - char(3) 列

    我在 Oracle 中有一个表 其中列 SC CUR CODE 是 CHAR 3 当我做 Query q2 em createNativeQuery select sc cur code sc amount from sector cost
  • java XMLSerializer 避免复杂的空元素

    我有这个代码 DocumentBuilderFactory factory DocumentBuilderFactory newInstance DocumentBuilder builder factory newDocumentBuil
  • Java 正则表达式中的逻辑 AND

    是否可以在 Java Regex 中实现逻辑 AND 如果答案是肯定的 那么如何实现呢 正则表达式中的逻辑 AND 由一系列堆叠的先行断言组成 例如 foo bar glarch 将匹配包含所有三个 foo bar 和 glarch 的任何
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也

随机推荐

  • 如何在 Startup.Configure 中处理异步操作?

    在我的 ASP NET 5 应用程序中 我想将一些数据从 Azure 加载到 Startup Configure 方法内的缓存中 Azure SDK 专门公开异步方法 通常 调用异步方法是通过异步方法内的等待完成的 如下所示 public
  • 在 if() 内调用方法 - C#

    我有几个方法根据它们的成功返回一个 bool 在 IF 内部调用这些方法有什么问题吗 makes sure that Method2 will only get called if Method1 returned true use to
  • 如何防止在表单加载时选择 datagridview 单元格

    如何在表单加载时不选择 datagridview 单元格 我已经尝试了太多 我的 dgvproducts 属性是 readonly false selection mode CellSelect 1 我已将此代码放入form shown事件
  • 如何将 .pdf 和 .jpg 文件合并为一个 pdf

    磁盘上有两个文件 jpg和 pdf 我需要读取这两个文件并将它们添加到新的pdf中并发送到浏览器以便可以下载 新的 pdf 文件仅包含 pdf 内容 不包含 jpeg 文件图像 memoryStream myMemoryStream new
  • 为什么 mysql JDBC 驱动程序返回 TRANSACTION_READ_COMMITTED 作为默认隔离级别

    据我所知 Mysql DB 的默认事务隔离级别是 REPEATABLE READ 看Mysql 事务隔离级别 https dev mysql com doc refman 8 0 en innodb transaction isolatio
  • 使用 FOSRestBundle 返回响应时无法找到模板

    我正在使用 FOS Rest Bundle 构建 Api 问题是每次我尝试返回任何内容时都会收到错误消息 无法找到模板 我真的不想渲染模板 而是序列化我拥有的实体 这是我的代码 路由 yml acme api register patter
  • 将 2 个数字相乘,然后求和

    我很难尝试做一些看起来应该很容易做的事情 我基本上想将一个节点中的 2 个数字相乘 然后将所有节点的这些数字相加 这是我尝试过的 XSLT 代码
  • 使用 ncurses 时未定义对“stdscr”的引用

    我正在尝试在 Ubuntu 11 10 中编译我的代码并收到这些错误等等 到目前为止 通过谷歌搜索我认为这是一个链接错误 具体来说 有人建议确保您拥有正确的标头并链接 lncurses 库 我已经这么做了 我仍然收到此错误 我还读到也许我应
  • git reset --soft 的实际用途?

    我使用 git 已经有一个多月了 事实上 我昨天才第一次使用重置 但软重置对我来说仍然没有多大意义 我知道我可以使用软重置来编辑提交 而无需更改索引或工作目录 就像我所做的那样git commit amend 这两个命令真的一样吗 rese
  • C++20 范围和排序

    我正在处理 C 20 的最后 4 个大版本 试图学习新的主要功能 尝试来自网络的一些与范围相关的代码 我写了 std vector ints 6 5 2 8 auto even int i return 0 i 2 ranges auto
  • 在 MongoDB 中的对象中插入数组

    我是 MongoDB 的新手 我想像这样插入 mongodb 数据 但我不知道如何做 image cab tags NNP 0 NN 1 image castle tags NNP 2 NN 1 我的代码是 BasicDBObject ob
  • 登录管理后,Django 开发服务器停止

    我已经在 python 3 7 中安装了 django 3 0 并启动了一个基本的 django 项目 我创建了一个超级用户并使用运行开发服务器python manage py runserver 当我去localhost 8000 adm
  • 如何使用 R 将日期时间格式转换为“ddmmyyyy”?

    我的约会dataframe看起来像这样 Date Values 1JAN2018 80 23DEC2019 21 3 我怎样才能将其格式化为ddmmyyyy日期以便我可以使用ggplot创建时间序列图 我做了什么 Date lt as Da
  • 处理父小部件中的点击事件

    在我的应用程序树中 我有两个小部件 GestureDetector onTap gt print Outer child IconButton icon Icon Icons add onPressed gt print Inner 他们都
  • 将 OnClickListener 关闭然后再打开

    我在用户单击按钮后将 OnClickListener 设置为关闭 confirm setOnClickListener null 这使得该按钮不可单击 但我希望在用户单击另一个按钮后它可以单击 我怎样才能做到这一点 Just set con
  • 枚举所有正在运行的数据库

    我正在编写一个小型数据库管理程序 如果您提供数据库 它可以正常工作 但如果您不知道安装了哪个数据库 则效果不佳 如何枚举所有正在运行的数据库 例如程序的输出 Port xy MS SQL Server 2005 Port ab Postgr
  • 没有子元素的 Javascript 元素 html [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 在我的 javascript 代码中 我需要获取元素的定义 但没有其内容 既不是文本也不是子元素 例如 为了 div c
  • 如何将十进制基数 (10) 转换为负二进制基数 (-2)?

    我想编写一个程序将十进制转换为负二进制 我不知道如何从十进制转换为负二进制 我不知道如何找到规则以及它是如何运作的 例子 7 base10 gt 11011 base 2 我只知道是这样7 2 0 1 2 1 1 2 2 0 2 3 1 2
  • 如果进程附加了 CLR 调试器,.NET 代码运行速度是否会变慢?

    正如标题所说 我正在运行一个很长的程序 并且它附加了 CLR 调试器 因此我可以捕获和检查异常 我获得的性能是否与不使用调试器运行它相当 或者我是否付出了严重的 2 10 倍或更多 代价 最重要的是 工具 选项 调试 常规 抑制模块加载的
  • Java 中 if/else 与 switch 语句的相对性能差异是什么?

    担心我的 Web 应用程序的性能 我想知道 if else 或 switch 语句中哪一个在性能方面更好 我完全同意过早优化是应该避免的观点 但 Java VM 确实有可用于 switch 的特殊字节码 See WM Spec http d