gpt4 book ai didi

java - 我应该查看 java 编译器生成的字节码吗?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:41:17 26 4
gpt4 key购买 nike

没有

  • JIT 编译器可能会将字节码“转换”成完全不同的东西。
  • 它将导致您进行过早的优化。

  • 你不知道哪些方法会被JIT编译,所以最好把它们都优化一下。
  • 它会让你成为更好的 Java 程序员。

我是在不知道(显然)的情况下问的,所以请随意重定向到 JIT 超链接。

最佳答案

是的,但在某种程度上——作为一个了解幕后情况的教育机会是很好的,但可能应该适度进行。

这可能是一件好事,因为查看字节码可能有助于理解 Java 源代码将如何编译成 Java 字节码。此外,它可能会给出一些关于编译器将执行哪种优化的想法,以及可能对编译器可以执行的优化量的一些限制。

例如,如果执行字符串连接,javac 会将连接优化为使用 StringBuilder 并执行 append 方法连接字符串字符串

但是,如果在循环中执行字符串连接,则每次迭代都可能会实例化一个新的 StringBuilder,与手动实例化一个 StringBuilder 相比,可能会导致性能下降在循环外,只在循环内执行 append

关于JIT的问题。即时编译将是特定于 JVM 实现的,因此在将字节码转换为 native 代码时,很难找出字节码实际发生了什么,而且,我们无法分辨哪些部分正在被 JITted(至少不是没有一些特定于 JVM 的工具来查看正在执行哪种 JIT 编译——我不知道这方面的任何细节,所以我只是在猜测。)

也就是说,JVM 无论如何都会执行字节码,它的执行方式对开发人员来说或多或少是不透明的,而且是特定于 JVM 的。可能存在一些 JVM 执行而另一个 JVM 不执行的性能技巧。

归结为查看生成的字节码的问题,归结为了解源代码在编译为字节码时实际发生了什么。能够看到编译器执行的优化类型,但也了解编译器执行优化的方式存在限制。

综上所述,我认为沉迷于字节码生成并尝试编写将发出最优化字节码的程序并不是一个好主意。更重要的是编写其他人可读和可维护的 Java 源代码。

关于java - 我应该查看 java 编译器生成的字节码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/800916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com