主题:【讨论】解释执行类代码的性能有无可能达到甚至超过本机编译代码 -- 老兵帅客
共:💬64
你不管如何运行,他就是他了。所以一个程序你不管运行多少遍,可执行文件依然如我,不会丝毫改动。(你也没法改动了)
而Java的byte code和.NET的IL不是机器指令。是一种中间语言,在运行时由JVM或是CLR临时翻译成机器指令。这个过程是one to many的关系。一段byte code可能在第一次翻译的时候,质量很低,但经过一段时间,翻译的质量就会提高,甚至超过C/C++静态编译的质量。
理论上讲,JVM和.NET有C/C++拥有的一切静态信息以及更多的动态信息。对一个长时间运行的程序而言,编译的开销会逐渐消失。理论上因该可以产生更好的机器代码,取得根好的性能。当然,程序最终的性能还有好多其他因素,比如内存管理方式的不同会造成性能上的差异。
- 相关回复 上下关系8
压缩 7 层
Metadata不能加进去么?就像调试器版本的那样 梦里依稀 字0 2004-07-23 20:52:00
调试器用的和动态分析/优化用的Meta Data是不一样的 老兵帅客 字294 2004-07-23 21:01:57
关键在于这种程序流的信息是否只有VM机才能提供 梦里依稀 字173 2004-07-23 21:09:46
不知道是不是可以这样说:C/C++编译好的程序就是CPU执行的具体指令了。
回复 老兵帅客 字671 2004-07-23 21:54:54
二进制代码不能变化似乎也不是绝对的吧 梦里依稀 字198 2004-07-23 21:34:59