到了办公室,有了Lua环境,我决定试一下Lua的运行速度,测量的方法与Squirrel一样,将读TSC寄存器的C代码封装成一个方法,放入Lua及Squirrel中,测试结果也令我很诧异,Lua实际上比Squirrel要慢。
Lua Table:
tb={};
i=0;
while(i<1000)
do
tb[i]=i*13
i=i+1;
end
total=0;
i=0;
while(i<1000)
do
total=total+tb[i];
i=i+1;
end
这段程序与测试Squirrel的测试程序是差不多的,Lua执行这段代码花费了1308K的CPU 脉冲,Squirrel几乎比Lua快20%。这有些令人想不通,我不想得出Squirrel比Lua快的结论,难道Lua在执行代码的时候是边扫描分析边执行?Squirrel在执行代码之前实际上已经进行了预编译,脚本文件已经变成了存储在Squirrel虚拟机内地字节码,如果Lua没有采取与编译技术,那么它落后Squirrel是可以理解的。
我不是做游戏开发的,对Lua只知道基本的使用,如果有Lua的高手,可以帮我看看Lua虚拟机有没有预编译过程,如果没有,Lua完全可以像Squirrel一样进行预编译,提高执行速度。