performance - Jython 和 JRuby 等 JVM 实现如何击败它们的原生实现?

标签 performance jvm jruby jython quercus

我正在看这个视频here ,其中 Robert Nicholson 讨论了 P8,这是一种 PHP 在 JVM 上的实现。在某些时候,他提到他们的目标是在 future 某个时候在性能上超越原生 PHP。

他提到了 JRuby 和 Jython,它们开始时比它们的原生版本慢,但最终超过了它们。 Quercus,JVM 上的另一个 PHP 解释器声称是 4x faster比 mod_php 还值得注意。

这是否意味着 JVM 比 C 慢的一般想法是错误的,或者原始 C 实现中是否存在缺陷?

最佳答案

Does that mean that the general idea that the JVM is slower than C is wrong, or are there >flaws in the original C implementations?



两者兼而有之

JVM 已经存在了很长时间,并且在效率方面取得了显着的进步。垃圾收集、抖动、缓存和其他领域比 PHP 等“引用”实现更先进。

任何深入了解 PHP 的人都会理解为什么很容易实现效率提升。

我个人怀疑 JVM 能否胜过 CPython……但我可能是错的……我是,这是因为 JVM GC 更快,IronPython 也是如此。性能改进可能是不依赖 C 调用堆栈,例如在无堆栈 Python 中。 The Jython site states

Jython is approximately as fast as CPython--sometimes faster, sometimes slower. Because >most JVMs--certainly the fastest ones--do long running, hot code will run faster overtime.



我可以理解这一点,因为 JVM 将在缓存生成时达到 C 性能级别,等等基本上否定了 VM 实现代码的更高级别的方面(其中很大一部分无论如何都是用 C 编写的)

在许多解释性语言中,如 PHP 和 Python 只是通往等效 C 调用和深入机器代码的桥梁。在 JVM 中,Jitter 通过将字节码简化为机器代码等价物来执行类似的功能。最终,诸如高级语法和字节码之类的中间表示无论如何通常都会减少到 C 速度或更快的 CPU 操作......所以都是一样的,只是 更多中间步骤这只会影响加载新代码时达到完全效率的延迟。在 RAM 中,您会说“真正的区别是什么?”答案只是到达那里的过程以及决定堆栈缠绕速度、垃圾收集算法、寄存器使用和逻辑表示(例如算术)的最终表示。

关于performance - Jython 和 JRuby 等 JVM 实现如何击败它们的原生实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3488675/

相关文章:

performance - SQOOP导出命令VS DB2 LOAD CLIENT

javascript - 在 Javascript 上使用 Rhino 的 evaluateString() 的 Android StackOverflow 错误

multithreading - OpenJDK JVM不会在多个内核上调度线程

java - System.java :-2:in `arraycopy' : java. lang.ArrayIndexOutOfBoundsException

java - 在 SWT 应用程序中使用 styledText

java - 如何以良好的性能将大量数据从一个 Oracle 数据库复制到另一个数据库

r - 使用并行与贝叶斯回归有意义吗?

java - 更新字符串的有效方法是什么?

Java SE 8 完全崩溃

ruby - ActiveMessaging、ActiveResources 或 Ruby XMLRPC