【问题标题】:Difference between PyPy and JVMPyPy 和 JVM 的区别
【发布时间】:2015-06-02 05:13:16
【问题描述】:

据我了解,默认的 Python 解释器 (CPython) 会将源代码编译为字节码,然后将字节码解释为机器码。

另一方面,PyPy 使用 JIT 将经常解释的字节码优化为已编译的机器码。这与 JVM 有何不同? JVM是一个解释器+编译器。它将源代码编译为字节码,然后将经常解释的字节码优化为已编译的机器码。

还有其他区别吗?

【问题讨论】:

  • JVM 是一个虚拟机,而不是解释器+编译器。 Java 编译器将源代码编译为字节码。
  • 这真的很广泛。 JVM 和 PyPy 是完全不同的程序。它们在运行代码和使用相似技术的广义上是相似的,但在各种层面上都有很多差异。这就像问两座摩天大楼之间有什么区别。
  • 不是完全相同的问题,但足够接近,因此信息应该是有价值的。 stackoverflow.com/questions/441824/…

标签: python compilation jvm interpreter vm-implementation


【解决方案1】:

(CPython)将源代码编译成字节码,然后解释字节码

  • CPython 可以评估原始源代码,但可以将其编译为字节码以获得更高的解释性能。
  • PyPy 也是解释器,但可以将源代码转换为机器代码(或 C、JVM 字节码、CIL)。
  • Java 将源代码编译为 JVM 的机器码。进一步的 JVM 在其内部运行此代码。 JVM 还包括 JIT,它帮助 JVM 将当前执行的字节码转换为机器码。 Read more

【讨论】:

  • 根据您的回答,PyPy 和 JVM 没有区别,因为两者都解释字节码并可能使用 JIT 进行机器代码生成。 AFAIU CPython 就像没有 JIT 的 JVM
猜你喜欢
  • 1970-01-01
  • 2018-04-17
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
  • 1970-01-01
  • 2011-03-27
  • 2021-01-05
  • 1970-01-01
相关资源
最近更新 更多