主题:【讨论】解释执行类代码的性能有无可能达到甚至超过本机编译代码 -- 老兵帅客
共:💬64
Java 的VM是混合型的。简单的运算是解释执行,费时的反复进行的操作进行编译,生成本机代码。这部优化工作可以超过C++的静态优化,因为它现在更了解程序运行的特点。而C++/C的编译器在生成本机代码的时候没有这些信息。那么为什么不将所有的Code在运行前编译成本机代码呢。Sun的理论是“磨刀有时会误砍柴功”。编译和优化是有代价的。只有当收获大于开销的时候才有意义。基于这个原理,Hotspot JVM要观察程序的运行一段时间才能决定哪些操作有必要优化。
微软的CLR是JIT技术。也就是在运行前,MSIL要转化为本机代码。这种技术早期的Java使用过,但后来放弃了。不知道为什么微软使用这种技术。在实施细节上,CLR和JVM也有些不同。
- 相关回复 上下关系8
😄深有同感,烧菜也是编程! 懒厨 字0 2004-07-24 22:16:52
😄不脱懒厨本色 老兵帅客 字0 2004-07-25 17:24:48
不知道你们在说什么 ppw 字57 2004-07-23 20:18:49
😉再说几句。现在好像没有严格意义上的解释执行类代码了。
那么C 为什么不能也引进动态的优化技术呢? 梦里依稀 字165 2004-07-23 20:16:48
C语言有两个问题阻止了它的进步 老兵帅客 字349 2004-07-23 20:32:29
😅老兵的这个Argument比下面的那个好 梦里依稀 字395 2004-07-23 20:49:50
这么说吧, 在真正要速度的人群中 ppw 字60 2004-07-23 20:54:26