李战:
的确,hotspot技术可以提高bytecode的执行效率,但这只能在不动摇整个JAVA大厦的前提下加固地基而已,作为实在有限。原因是:
[阅读: 705] 2006-03-15 00:42:20
1.由于ByteCode设计时没有太多的照顾JIT,因此要么对整个中间代码进行JIT(时间开销大),要么只对关键代码(即HotSpot)进行JIT。
2.也是由于ByteCode的问题,无法做到象.NET那样对方法级别这样的细微粒度上的JIT。
3.也是由于ByteCode的问题,使得在进行JIT时缺少优化代码的前后判断条件,导致JIT对代码的优化很差,甚至远远比不上解释器对代码的解释执行优化(因为解释器知道更多优化条件)
4.对于动态装卸的Java类,HotSpot缺少必要的编译结果缓中。不象.NET一旦有过JIT,便一直都只用本机代码。甚至缓存了一个完整的本机代码模块文件,下次再调入该模块时,直接调入即可,根本不需JIT(除非本机代码模块文件被删除,或中间代码被修改)。
5.HotSpot对Java庞大的类库似乎根本不起作用,而.NET的每个系统模块都预先有本机版本,是立即装载的。
所以,HotSpot对提高ByteCode的运行效率的作用是很有限的。
李战(leadzen)