五千年(敝帚自珍)

主题:【讨论】解释执行类代码的性能有无可能达到甚至超过本机编译代码 -- 老兵帅客

共:💬64
全看分页树展 · 主题 跟帖
家园 不知道是不是可以这样说:C/C++编译好的程序就是CPU执行的具体指令了。

你不管如何运行,他就是他了。所以一个程序你不管运行多少遍,可执行文件依然如我,不会丝毫改动。(你也没法改动了)

而Java的byte code和.NET的IL不是机器指令。是一种中间语言,在运行时由JVM或是CLR临时翻译成机器指令。这个过程是one to many的关系。一段byte code可能在第一次翻译的时候,质量很低,但经过一段时间,翻译的质量就会提高,甚至超过C/C++静态编译的质量。

理论上讲,JVM和.NET有C/C++拥有的一切静态信息以及更多的动态信息。对一个长时间运行的程序而言,编译的开销会逐渐消失。理论上因该可以产生更好的机器代码,取得根好的性能。当然,程序最终的性能还有好多其他因素,比如内存管理方式的不同会造成性能上的差异。

全看分页树展 · 主题 跟帖


有趣有益,互惠互利;开阔视野,博采众长。
虚拟的网络,真实的人。天南地北客,相逢皆朋友

Copyright © cchere 西西河