李战:
据说HotSpot的JVM引擎能将JAVA程序的性能提高1-2倍,不过
[阅读: 992] 2007-01-13 12:56:06
HotSpot引擎对性能提高的空间有限。
首先,HotSpot技术是先解释执行bytecode,并开始跟踪和分析代码关键点,即所谓的“热点”。然后,将这些热点代码进行JIT,形成本机代码,以后程序再运行到热点就直接执行本机代码。且不说跟踪和分析代码本身也会耗用系统的性能,HotSpot并非全部用本机代码执行,从这一点上来讲,HotSpot根本无法和.NET的JIT相比,.NET的JIT是100%的。
当然,HotSpot的推崇者说:“优化20%的关键代码比起那些80%的非关键代码对性能的提高更加明显”。这的确是正确的,但如果100%的JIT优化呢?
HotSpot的推崇者还说:“C++的编译代码优化是静态优化,而HotSpot的JIT优化是动态优化,动态优化比静态优化得更好,所以HotSpot甚至比C++编译的本机代码更快”。其实,学过编译原理的人都知道,到了中间代码级别那些赋值、入栈、出栈、跳转、调用指令时,能优化的余地已经很小,绝不可能对性能产生翻天覆地的变化。
不过,HotSpot中的优化还真是很多,什么“内联方法”优化,甚至还有什么“动态逆优化”可以把编译后的框架在返回到解释框架,的确是费了不少功夫。但是,总感觉这些优化是在填补JAVA的bytecode和JVM的先天不足,对提高系统的性能真的有限。
李战(leadzen)