holly:
冒着被吓死的危险, 偶要大胆地说: 有失偏颇
[阅读: 785] 2005-10-28 05:59:35
> 此外,因为Java虚拟机基本上是按中间代码来解释执行的,这是 Java程序运行效率一直无法提高的根本原因。即使Java有JIT,但由于Java的中间代码与Java运行需要的系统类库绑得太紧,其JIT的结果不是100%的本地码,因此效率仍然无法提高多少。也就是说:“基本不顶用!
JIT 的编译单元是一些指令块, 并不是所有. JIT 的效率提高在于运行期间的优化, 很多运行期的信息在静态编译时是无法得到的. 根据这些信息, JIT 可以生成在当前状态下最优化的本地指令序列. 当然, 要记住这是局部的. Java JIT compiler 的设计目标就在局部, 而并不是全体.
> 但是,.NET是在充分考虑了Java的优点和缺点之后设计的。其中间代码IL设计得更加合理,不但转换为本地机器码的数度奇快(Anders称为“映射”,而不愿称为“编译”),关键是其JIT的结果是100%纯本地代码。微软声称,其优化后的指令速度可以比美C++,因为微软有这个吹牛的资本。
如上, 在局部, 完全的静态编译并不一定能达到最大的优化. 另外, 100% 本地代码就是不可移植. 至于说 "微软有这个吹牛的资本。" 那就嘿嘿嘿了. 要比 C/C++ 编译优化, 得跟 intel 比.