【精选】lua5.4.2(使用Lua54程序) 与 Lu2.0(使用OpenLu程序)速度比较 | 您所在的位置:网站首页 › lua52和53差别大吗 › 【精选】lua5.4.2(使用Lua54程序) 与 Lu2.0(使用OpenLu程序)速度比较 |
lua5.4.2(使用Lua54程序) 与 Lu2.0(使用OpenLu程序)速度比较 lua5.4.2(Lua54程序):请从Lua官方网站下载。 Lu2.0(OpenLu程序):http://www.forcal.net/xiazai/lu2/openlu64.zip 关于Lu脚本,参考:Lu脚本教程 C/C++调用Lua脚本函数的效率,与C/C++调用Lu脚本函数的效率差别不大,本文不做讨论,参考:C/C++调用Lu脚本函数。 Lu协程的速度远胜于Lua协程,主要是协程运行机理不同导致的。Lua使用create方法将一个函数(函数名假设为a)创建为协程,此函数运行时任何地方(例如该函数又调用了其他函数的地方)遇到yield语句(即便函数a中没有yield语句),该函数a将挂起,直至使用resume方法重启该线程。Lu协程很简单,不使用任何方法创建协程,只要函数中使用yield语句即认为是一个协程,下一次调用将从yield语句的下一条语句开始执行,协程参数传递也总是从函数入口处进行的。 下面仅比较Lua脚本与Lu脚本本身的效率,结果表明,平均来说,Lua脚本比Lu脚本速度略快,但差别不大(协程除外)。 例子1:数值计算 Lua代码: function z() local t = os.clock() local mcos = math.cos local msin = math.sin local x=0 local y=0 local z=0 for x=0,1,0.0011 do for y=1,2,0.0011 do z=z+mcos(1-msin(1.2*(x+0.1)^(y/2-x)+mcos(1-msin(1.2*(x+0.2)^(y/3-x))))-mcos(1- msin(1.2*(x+0.3)^(y/4-x)))-mcos(1-msin(1.2*(x+0.4)^(y/5-x)+mcos(1-msin(1.2*(x+0.5)^(y/6-x))))- mcos(1-msin(1.2*(x+0.6)^(y/7-x))))) end end io.write(z) io.write(string.format(" Time Elapsed %f\n", os.clock() - t)) end z()Lua运行结果: 19160.536601703 Time Elapsed 1.67 Lu代码1: mvar: //使用未定义的模块变量。变量未定义就可以使用,容易隐藏不可预知的错误,故后面不再使用这种方法 t=clock(), z=0.0, x=0.0, while{ x |
CopyRight 2018-2019 实验室设备网 版权所有 |