我一直在研究解释器/编译器,然后偶然发现了JIT-Compilation-特别是Google Chrome的V8 Javascript Engine。
我的问题是-
- 怎么会比标准口译更快呢?
- 为什么不首先使用JIT-Compilation?
我目前的理解
每个Javascript程序都从源代码开始,然后不管执行方法如何,最终都将其翻译为机器代码。
无论JIT编译和解释必须遵循这条道路,所以JIT编译怎么会有更快的(也因为JIT是有时间限制的,不像AOT编译)?基于Wikipedia的JIT-Compilation Article,JIT-Compilation似乎是一个相对较旧的创新。
“最早发布的JIT编译器通常归功于McCarthy在1960年对LISP的研究。”
“ Smalltalk(约1983年)开创了JIT编译的新方面。例如,按需转换为机器代码,并将结果缓存起来供以后使用。当内存不足时,系统将删除部分代码并重新生成再次需要它时。”
那么,为什么解释Javascript 开头呢?
我很困惑,对此我做了很多研究,但没有找到满意的答案。
如此简洁明了的答案将不胜感激。并且,如果需要引入有关解释器,JIT编译器等的更多解释,也将不胜感激。