|
|
1
8
二者兼而有之 JVM已经存在了很长一段时间,并且在效率方面取得了显著的进步。垃圾收集、Jitting、缓存和其他领域比“引用”实现(如PHP)更高级。 任何一个了解PHP的人都会理解为什么效率提高是容易实现的。
我可以这样描述,因为随着缓存的生成,JVM将达到C性能级别,等等,基本上否定了VM实现代码的更高级别方面(其中很大一部分是用C编写的)。 在许多解释性语言中,如PHP和Python只是等效C调用的桥梁,并深入到机器代码中。在JVM中,抖动通过将字节码减少为等效的机器代码来执行类似的功能。最后,中间的表示,如高级语法和字节码,通常被减少到C-速度或更快的CPU操作无论如何…所以一切都一样,只是 更多中间步骤 这只会影响加载新代码时达到完全效率的延迟。在随机存取存储器中有一个点,你会说“真正的区别是什么?”答案是只有这个过程,以及最终的表示,它决定了堆栈缠绕的速度,垃圾收集算法,寄存器使用和逻辑表示,如算术。 |
|
|
2
1
不难。如果用C编写实现,则必须编写自己的GC、JIT等(为了快速高效)。要做到这一点,你需要真正有经验的聪明人,给他们很多时间。 我将在这里说,当前的PHP实现(不是基于对内部工作的了解,而是基于我所看到的基准以及对PHP了解更多的人告诉我的东西)并不是最先进的。Facebook试图解决这个问题,但他们以一种不寻常的方式解决(因为有特殊的需求和PHP的典型用法,请参见 http://www.stanford.edu/class/ee380/Abstracts/100505.html ) 总结: 因此,如果有人在Java中实现PHP(或者在任何快速VM上),他不需要编写超级GC或JIT来快速地“只”编译器(可以很简单)。 |
|
|
3
0
有一些关于虚拟机做什么的提示 here . 例如,看起来Java虚拟机首先检查字节码的哪些部分被频繁执行,然后将相关的部分编译成本机代码(然后应该以类似的速度执行,例如编译的C代码)。 顺便问一下,PHP是编译成字节码,还是仅仅使用内存中的数据结构来解释?通过先将PHP翻译成Java虚拟机可执行的字节码,可以自动地从现有的(语言不可知的)字节码执行优化中获益。 |