栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++解释器、模板解释器和JIT的一些认识

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++解释器、模板解释器和JIT的一些认识

  • 解释执行:包括C++解释器和模板解释器。解释执行并不是每次执行字节码时动态把它编译成机器码,而是将根据字节码的类型,转到对应的机器码去执行,即一个派发(switch)的过程。而C++解释器派发到的是由字节码对应的C++代码所编译成的机器码,模板解释器派发到的是字节码对应的汇编模板所生成的机器码。由于C++代码由编译器编译成机器码,比较冗余,所以执行速度慢,而模板解释器的汇编模板是直接由汇编代码专门编写的,执行效率高。所以解释执行执行速度较慢,并不是每次将字节码动态编码生成机器码的原因,这是错误的。而是对于每个字节码都派发到对应的机器码上执行,而不是从上到下的顺序执行机器码,多了很多判断、跳转的指令,所以效率较低。

  • 编译执行:JIT对于热点代码,编译成运行效率高的机器码。这里与模板解释器的区别在于JIT针对的是代码段生成机器码,而模板解释器是针对每个字节码指令生成机器码,以及JIT是动态生成的,模板解释器是在JVM启动时就把字节码对应的汇编模板转换为机器码。某种意义上模板解释器也属于JIT的范畴。当JIT把整段代码直接编译成机器码时,在执行时就可以自上而下的获取执行机器码,而不用对于每条字节码指令跳转到对应的机器码上,执行效率获得提升。

  1. C++解释器:

  2. 模板解释器:

  3. JIT编译执行:

参考:
https://zhuanlan.zhihu.com/p/33886967
https://baijiahao.baidu.com/s?id=1693627511987297431&wfr=spider&for=pc

http://47.100.139.123/blog/article/132

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/589213.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号