|
|
1
2
这可能是jython 2.5b1中的一个错误。你应该考虑把它报告给Jython团队。我刚刚用jython(2.2.1)的最新稳定版本在我的MacBook上运行了pystone基准测试,我得到了缓慢但一致的结果:
对我来说,cPython的结果或多或少是一样的。我重新进行了三次测试,每次都得到了非常相似的结果。
但是,将JVM设置为服务器(启动速度较慢,长时间运行性能更好,不太适合“交互式”工作)稍微改变了局面:
我使用(-server-Xms256m-Xmx512m)进行了最后一次运行:
也许你可以用更大的堆重新运行上一次测试?要更改JVM开关,只需在jython安装中编辑jython文件。 |
|
|
2
2
对像JVM这样复杂的运行时环境进行基准测试是很困难的。即使不包括JIT和GC,在运行之间也有很大的堆、内存布局和缓存变化。 Jython的一个帮助是在单个VM会话中多次运行基准测试:一次预热JIT,一次或多次单独测量。我已经做了很多Jython基准测试,不幸的是,通常需要10-50次尝试才能达到合理的时间
如果您做了所有这些,并使用HotSpot服务器VM,您会发现Jython比Python上的CPython稍微快一点,但这绝不能代表Jython的总体性能。Jython开发人员对2.5版本的正确性比性能更为关注;在未来一年左右的时间里,2.6/2.7/3.0版本的性能将更加突出。您可以通过查看一些 microbenchmarks (最初来源于PyPy)我运行。 |
|
3
2
我的笔记本电脑运行UbuntuJaunty和JRE 1.6.0_12-b04的结果相同: nathell@breeze:/usr/lib/python2.5/test$ python pystone.py 500000 Pystone(1.1) time for 500000 passes = 12.98 This machine benchmarks at 38520.8 pystones/second nathell@breeze:/usr/lib/python2.5/test$ python pystone.py 1000000 Pystone(1.1) time for 1000000 passes = 26.05 This machine benchmarks at 38387.7 pystones/second nathell@breeze:/usr/lib/python2.5/test$ ~/jython/jython pystone.py Pystone(1.1) time for 50000 passes = 2.47788 This machine benchmarks at 20178.6 pystones/second nathell@breeze:/usr/lib/python2.5/test$ ~/jython/jython pystone.py 500000 Pystone(1.1) time for 500000 passes = 19.7294 This machine benchmarks at 25342.9 pystones/second nathell@breeze:/usr/lib/python2.5/test$ ~/jython/jython pystone.py 1000000 Pystone(1.1) time for 1000000 passes = 38.9272 This machine benchmarks at 25689 pystones/second
|
|
|
4
1
我非常确信,通过调整JVM配置可以改善结果(JRuby使用了很多有趣的标志来实现这一点),而且我也非常确信垃圾收集可以进行调优。 如果您对这个基准非常感兴趣,这里有一个很好的资源来配置您的VM: Tuning Garbage Collection . 我还要看一下JRuby配置。 /亚历克斯 |
|
|
5
1
XP_Win32_PC上的我的工作台:
它不是那么快,但是。。。 没有“特效” 这是java虚拟机的“问题”吗? 如果您想进一步了解我在这台旧Win32 PC上的基准测试,请添加注释 |