淘客熙熙

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

共:💬64
全看分页树展 · 主题 跟帖
家园 回复

一。目前标准的C/C++程序编译以后所得到的可执行文件只是一个二进制执行映像,而不存在媒体信息,因此是不可能自行改动代码运行顺序或者优化的。但是记忆中确实存在过解释型的C/C++环境(它有提示符OK,从图片上来看很像是古典的Basica),因此应该有对应的中间码表示和中间码到机器码的转换。

至于机器代码自修改,主要是通过汇编码来实现,除了病毒这类变态应用以外,主要是用在极度节省内存的环境中。

二。对于JVM/CLR这类现代VM来说,中间码到机器码的转换过程的确存在一个学习时期,而且这个时期的确可以提高转换质量,从而提高VM的运行效率,甚至在局部做到理论上的最优化,从而超过静态编译优化器所能够做到的程度,但是在全局范围内的最优化将需要很长的运行时间,这样这项技术的适用范围将受到限制。

全看分页树展 · 主题 跟帖


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

Copyright © cchere 西西河