在本文中,将主要涉及两个现在广泛应用的64位平台--AMD64与PowerPC64,并分别使用IBM与Sun Microsystems这两个Java语言巨头提供的Java虚拟机(JVM),通过SPECjvm98与SPECjbb2000的测试,来评价32位与64位中JVM的性能。
图1
|
图2 |
图3与图4显示了在AMD64平台上,Linux版本的IBM Developer Kit for Linux、Java 2 Technology Edition Version 1.4.2 GA在SPECjvm98和SPECjbb2000中32位与64位的性能测试结果。其中,基准测试程序中有三项--_209_db、_213_javac、_228_jack,在64位环境下表现出了更佳的性能。另外,在SPECjbb2000测试中,当面对三个不同大小的测试堆时,64位IBM版本的JVM都没有表现出比32位版本更好的性能。
图3 |
图4 |
图5与图6显示了在PowerPC64平台上,IBM Developer Kit for Linux,Java 2 Technology Edition Version 1.4.2 GA在SPECjvm98和SPECjbb2000中32位与64位的性能测试结果。此处,在所有SPECjvm98和SPECjbb2000的测试中,64位JVM的性能都不及32位平台。
图5 |
图6 |
结论 基于运行Linux操作系统的PowerPC64平台的测试结果,表明如果在此平台上使用IBM的JVM,那么,那些不需要64位特性的程序,还是让它们运行在32位JVM中吧,因为在此平台的所有测试结果中,64位JVM的性能都比32位平台低。
而基于运行Linux操作系统的AMD64平台的测试结果,表明不管是Sun还是IBM的JVM,32位与64位的性能都在伯仲之间,要注意的是,性能的差异是依赖于具体的应用程序与JVM的,如果需要最佳性能,就必须在某个特定的执行环境中测试某个特定的程序,以评价转换到64位所带来的潜在性能提升。
有几件事情需重点注意,第一,尽管SPECjvm98与SPECjbb2000都是工业标准的基准测试程序,但它们的测试范围有限,因此,就测试结果而言,只对一部分的Java程序正确,而不是所有;第二,随着64位计算越来越被人们接受,我们期待64位程序会有所改进,包括64位JVM--也许其在将来会大幅提高性能;第三,此处只组合测试了几种特定的硬件平台、操作系统与JVM,因此,如果要进一步地说明问题,恐怕只有在64位Windows XP/2003,及64位Mac OS X上的进行JVM基准测试了。