这几天粗略的测试了一下lua的效率!首先声明这个测试很有针对性,大部分是针对游戏中的使用,而绝非lua的整体性效率(这个测试我不会),lua构建的上层逻辑中,大概使用的语句不太多,for,迭代,调用C函数,if else,local var等这些语句,其他的语句相对少!给出测试代码:
#include <iostream>
extern "C"
{
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
};
#include "lua_tinker.h"
int cpp_func(int arg1, int arg2)
{
return arg1 + arg2;
}
int main()
{
// Lua 甫 檬扁拳 茄促.
lua_State* L = lua_open();
// Lua 扁夯 窃荐甸阑 肺靛茄促.- print() 荤侩
luaL_openlibs(L);
// LuaTinker 甫 捞侩秦辑 窃荐甫 殿废茄促.
lua_tinker::def(L, "cpp_func", cpp_func);
// sample1.lua 颇老阑 肺靛/角青茄促.
lua_tinker::dofile(L, "sample1.lua");
// 橇肺弊伐 辆丰
lua_close(L);
return 0;
}
给出lua代码:
local main={}
local array={"a","b","c","d","e","f"}
main.testFunction = function()
-- cpp_func(1,1)
-- for i,k in ipairs(array) do
-- end
for i=1,10000 do
if i == 1 then
else
end
end
end
main.main = function()
print("start time:",os.time())
for i=1,10000 do
main.testFunction()
end
print("end time:",os.time())
end
main.main()
大概给出一个测试结果吧,环境是我的开发机器!
lua 调用C函数,每秒可以调用10000000次,大概1ms调用1k次。
lua 至于申请变量和 if else 判断,每秒可以调用100000000次,大概1ms调用1w次。迭代起与for循环相当!