san*_*san 37 python jvm jython
请不要发生火焰战争.我确实不是Java的粉丝,但我认为JVM是一个相当不错且优化得很好的虚拟机.它支持JIT,非常接近流行的CPU架构的共同点.我假设CPython运行时比相应的基于JVM的运行时更远离金属.
如果我的假设是正确的,那么有人可以向我解释为什么Jython与CPython相比会遭受如此重大的性能损失吗?我最初的假设是JVM只是为静态语言设计的,而且很难将动态语言移植到它上面.然而,Clojure似乎是这一论点的一个反例.
另一方面,IronPython似乎做得很好.我相信这两个项目的主要开发人员是相同的,所以一个代码设计和实现明显优于另一个的论点似乎不太可能.
我无法弄清楚具体原因是什么; 任何帮助将不胜感激.
nco*_*lan 21
请记住,IronPython是由一个最初的Jython开发人员(Jim Huginin)创建的,目的是为了证明.NET CLR是动态语言的糟糕平台.他最终证明自己错了,IronPython的核心最终成为.NET动态语言运行时(在.NET上进行其他动态语言实现,比如IronRuby,更容易构建).
所以那里有两个主要的不同点:
相对于CPython和IronPython而言,简单地缺少专门用于Jython的开发资源,以及Jython开发优先级,专注于将其与最新版本的Python进行功能奇偶校验,而不是速度优化,并且Jython在它的时候会滞后是可以理解的加快了速度.
也就是说,Jython类似于CPython和IronPython,因为使用更好的算法通常胜过微基准测试中较差的性能.JVM/CLR还意味着,为特定组件下降到Java或C#比下降到CPython的C扩展更容易(尽管像Cython这样的工具尝试稍微缩小这个差距).