首先毋庸置疑:基于纯 VM 执行的实现方式比目前 MRI 的 C+VM 混合架构技术上要更先进,更容易做性能,JIT 等方面的优化。比如 js/java 的性能远由于 pthon,ruby 版本。 所以我的问题是为啥 MRI 没有走纯 VM 的技术路线。
什么是纯 VM
只执行字节码?
目前市场接受的高性能的 vm 就 jvm 和 beam, 所以主要还是没钱呀 开源搞的 vm 能和商业公司比么
没懂,现在的 MRI VM 确实是 Ruby -> ByteCode -> C Runtime 这样的解释过程。这和 JVM/JavaScript 的 VM 架构不是差不多吗?相比之下 JavaScript JIT 介入的位置还更早,感觉更不纯 VM 一点才对吧(?)
1.9 开始就 vm 了。我估计你是在思考一些不存在的问题,就是 java 里面 jvm 垃圾回收是否效率高,jit 是否牛逼等等等。ruby 世界里不是这么解决问题的。
不否认多线程模型是有用的,但是现实里很多时候多进程就搞定而且更好。另外 ruby/python 这边本来高性能部分就是要上 C 的,不是想做 java/js 那种全家桶。说白了 java/js 想替代一切那都是为了宣传,至于要干活,办法可以有很多,条条大路通罗马。