Java 优化器会删除空方法调用的参数构造吗?

2024-04-12

假设我有这样的代码:

log.info("Now the amount" + amount + " seems a bit high")

我将用虚拟实现替换 log 方法,例如:

class Logger {
   ...
   public void info() {}

}

如果没有检测到副作用,优化器是否会内联它,并且死代码删除是否会删除参数构造?


我猜编译器(javac)不会,但即时编译器很可能会。

然而,为了让它工作,它必须能够推断出您用来生成参数的任何指令都没有副作用。对于字符串的特殊情况,它应该能够做到这一点,但对于其他方法可能无法做到这一点。

可以肯定的是,做一个小的基准测试,将其与 Jesper 建议和查看的代码进行比较,以更快者或它们是否同样快者为准。

另请参阅此处:http://www.ibm.com/developerworks/java/library/j-jtp12214/index.html#3.0 http://www.ibm.com/developerworks/java/library/j-jtp12214/index.html#3.0

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

Java 优化器会删除空方法调用的参数构造吗? 的相关文章

随机推荐

  • 在 R 中使用 igraph 获取连接组件

    我想找到一张图的所有连接组件 其中组件具有多个元素 使用clusters给出不同集群的成员资格并使用cliques不给出连通分量 这是后续 R中列表的多重交集 https stackoverflow com questions 304065
  • C++ #include 语义

    这是同一预处理指令的多个问题 1 或 除了 MSDN 中找到的信息之外 include 指令 C C https msdn microsoft com en us library 36k2cdd4 aspx 1 a 这两种表示法有什么区别
  • 使用 java Spark 从 csv 读取列

    我尝试用java和spark读取csv 现在我这样做 String master local 2 String csvInput home username Downloads countrylist csv String csvOutpu
  • 单线程使用不同的连接参数写入不同的数据库

    我正在开发一个项目 其中不同的数据库中有三个具有不同模式的表 这意味着我有三个不同的连接参数来使用 JDBC 连接这三个表 让我们假设 对于表1 Username A Password B URL C Columns ID1 String
  • 使用 OpenSSL 进行加密,方式与 Java 相同

    我必须使用 bash 脚本加密字符串 就像使用 javax crypto Cipher 加密一样 在java中 我使用AES 256和密钥 0123456789 但是当我使用openssl时 我必须将 0123456789 转换为十六进制
  • 将图片插入 JTextPane

    在我的记事本应用程序中 我尝试添加图像 就好像它是JLabel into a JTextPane通过单击JMenuItem called Picture private class Picture implements ActionList
  • 如何向我的服务器添加线程?

    我是 Java 初学者 我有一个任务是构建 P2p 文件共享 Java 应用程序 我首先创建服务器和客户端 客户端可以向服务器发送消息 服务器做出响应 我相信下一步应该是将线程插入服务器类中 我阅读了所有相关内容并尝试了它 但我就是无法成功
  • 以编程方式比较图像 - lib 或类 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何使用Windows安全描述符来阻止执行其他应用程序?

    在我最近关于使用 CreateDesktop API 调用创建新桌面并在其中执行我自己的应用程序并防止其他应用程序在我的桌面中执行的问题之一中 有人指出我使用安全描述符 这里有人可以告诉我该怎么做吗 提前致谢 所有命名对象 包括您创建的桌面
  • 如何知道 QLineEdit 是否获得焦点?

    我想知道是否在QLineEdit一声点击 所以我想我应该重新实现以下函数 void QLineEdit focusInEvent QFocusEvent e virtual protected 我该怎么做呢 另外请告诉我如何使用focusI
  • 在Python中更改文件头的有效方法

    我正在尝试编写一个 python 脚本来更新一些大文件的标头 仅第一行 但是由于新标头不必与原始标头的大小 以字节为单位 相同 无论如何我可以更改标题而不触及大文件的其余部分 或者我必须通读所有内容并将它们写回文件 不 您可以在不触及整个文
  • Ember 中可靠的视图

    我有一个列出专辑的应用程序 当同时点击专辑时AlbumView and App overlay 也是一个视图 被显示 App overlay Ember View create 类似灯箱的叠加 and App AlbumView Ember
  • 从不同线程写入相邻的数组元素?

    是否有任何现代的常见 CPU 从不同线程同时写入数组的相邻元素是不安全的 我对 x86 特别感兴趣 您可能会认为编译器不会做任何明显荒谬的事情来增加内存粒度 即使它在技术上符合标准 我对编写任意大结构的情况感兴趣 而不仅仅是本机类型 Not
  • 有没有办法在 Linux 上使用 QFileDialog 自动向文件添加扩展名

    我希望用户能够输入将保存为 xml 文件的文件的名称 目前在 Windows 和 Mac 上 如果您输入 test 作为文件名 它会自动添加 xml 这就是我想要的 不幸的是 在测试 Linux 版本时 我发现输入不带扩展名的文件名会保存为
  • 如何安装 Dart v2?

    我浏览了 Dart 官方网站 他们深入探讨了 开发 渠道和 稳定 渠道 但对如何实际安装 SDK 版本一无所知 也没有有关当前稳定版和开发版的信息 显然我错过了隐藏在普通网站中的东西 我想尝试一些官方的 angulardart 组件库 但构
  • ASP.NET Gridview 中没有时间的日期格式

    在 ASP NET gridview 中绑定两个日期 我要显示dd MM yyyy但它显示10 03 2014 00 00 00
  • 如何在 Android 上保持在后台监听推送通知

    我正在研究 Android 中的推送通知 现在的问题是 我想在应用程序启动后立即在后台运行推送通知 因为我不知道服务器何时将数据推送到设备 主要要求是我们的企业应用程序有超过 10 个活动 并且根据收到的通知 我必须将相关活动置于前台 以便
  • 如何使用maven操作Manifest文件

    我有一个用 Maven 构建的 EAR 文件 EAR 包含多个 jar 我需要在清单文件中为其中一个 jar 添加一行 我知道 maven jar plugin 选项 manifestEntries 但这对于单个独立 jar 很有用 而不是
  • MySQL 实体框架错误 - 在配置中找不到指定的存储提供程序,或者指定的存储提供程序无效

    我用 C 编写了一个程序集来执行 MySQL 数据库的所有数据访问 我已在我的 C winform 桌面应用程序中成功使用了该程序集 已编译的 dll 但它仅适用于安装了 MySQL Connector Net 6 4 4 的电脑 我尝试在
  • Java 优化器会删除空方法调用的参数构造吗?

    假设我有这样的代码 log info Now the amount amount seems a bit high 我将用虚拟实现替换 log 方法 例如 class Logger public void info 如果没有检测到副作用 优