《Lua 5.0的实现》第八章 - 结论和致谢


    在本篇论文里,我们展现了Lua 5.0中很多创新的部分:基于寄存器的虚拟机;用新算法优化table,当它作为数组使用时;闭包的实现

    据我们所知,在所有被广泛使用的语言中,Lua第一个使用基于寄存器的虚拟机。对table的优化,lua可以实现一部分的table当数组使用(也就是说,如果有足够的key在1...n之间)。它实现的闭包也是很独特的,在复杂的情况下(基于数组的栈,词法作用域,first-class函数),用不复杂的方法实现了闭包。

    图10中例举了Lua新旧版本之间一些简单的性能比较。这些测试运行在512内存的Intel奔腾IV上,用的是Linux 2.6,Lua编译器使用的是gcc 3.3。Lua 4.0即没有使用基于寄存器的虚拟器,也没有对table数组进行优化。Lua 5'是没有实现table数组优化,尾调用,动态栈(依赖于协程)的Lua 5.0版本;Lua 5'就是在Lua 4.0上多了基于寄存器的虚拟机。

    我们所有的测试例子都来自于 The Great Computer Language Shootout [2], 除了第一个sum外,这个例子就是简单的将1循环的加到n。第一个例子在虚拟机上花费了很多的时间。它显示的新的虚拟机比旧的虚拟机快了不止一倍。其他的测试针对于另外的功能(函数调用,table/数组访问,等等),因此对虚拟机的优化对总时间影响不是很大。在使用数组的例子中(sieve,heapsort和matrix),新的数组和虚拟机的共同优化的作用下,测试时间减少了40%。

    Lua 5.0的完整的源码可以通过http://www.lua.org/source/5.0进行浏览。

感谢

    在闭包实现过程中Edgar Toernig提供了一个关键的建议。Thatcher Ulrich在Lua 4.0中,实现了早期的协程。为我们实现Lua 5.0中的协程提供了实际和理论的依据。作者部分的赞助来自于CNPq, FINEP, 和微软研究。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值