您现在的位置是:首页 > 技术资料 > Lua虚拟机的机制分析
推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

Lua虚拟机的机制分析

更新时间:2020-02-09 06:17:57 大小:5M 上传用户:gsy幸运查看TA发布的资源 标签:Lua虚拟机GC算法 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

自Lua从巴西天主教大学被开发出来已经有20多年。随着计算机应用技术的飞速发展和高级脚本语言的不断完善,Lua能很方便地嵌入到应用程序并为它们提供灵活的扩展和定制功能。与其它同类的高级解释型脚本语言相比,Lua有着两点非常重要的特性:简洁、高效。多数实验表明,Lua在程序执行效率上要比大部分的脚本语言(如Python、Perl等)高。另外Lua还提供非常丰富和实用的功能,比如函数式编程(所有的函数都是第一类值)、协同程序、自动内存管理等。由于Lua是用C编写而成,它与C/C++能非常方便的交互,而所有这些特性都归功于它有一个精简的、巧妙的、高效的Lua虚拟机的设计。

  Lua在相当长一段时间内都使用堆栈式的虚拟机,而从5.0版本后才改用寄存器式的虚拟机。基于寄存器的虚拟机减少了指令总数和指令执行时堆栈调整的开销因此执行效率得到提高。虚拟机的效率除了与指令操作数存储结构有关外还与编译和解释过程相关。解释性源程序一般要经过编译成字节码阶段,然后由解释器逐条解释和执行字节码。解释器中执行框架的设计直接影响了解释效率,Lua采用了一种最简单的执行框架设计方式(switch-case),由于它指令数较少,因此也获得了较好的执行效率。较新版本的Python虚拟机在采用了较好的指令分派方式后也获得了效率提升,而其它的采用效率更高方案的虚拟机必然也在设计上更复杂或占用更多内存。除此之外,垃圾回收(GC)算法也在一定程度上影响了虚拟机的效率,虽然Lua GC经过了若干技术的优化—比如分代的、增量式的垃圾回收—有着与其他GC机制相差不大的效率。但与其它虚拟机GC机制相比,LuaGC主体仍使用较为古老的标记-清除算法,该算法在标记和回收过程上都比较耗时而且在内存利用率(内存碎片的产生)方面有劣势,因而在性能上也略低于许多其它的虚拟机,Lua GC机制仍需要改善。

  本文首先简单的介绍了Lua的语言特性;然后深入分析了Lua虚拟机的实现,特别对Lua的编译过程、线程执行、函数调用和GC过程进行了深度探究;其次将Lua虚拟机中的关键技术与Python虚拟机的实现进行了比对,解释了其效率差异的原因;之后再对Lua虚拟机执行框架和GC机制进行改进,在执行框架中加入了查表分派和超级指令方式,...

部分文件列表

文件名 大小
Lua虚拟机的机制分析.pdf 5M

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载