这几天粗略的测试了一下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); ; }
给出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 , do then else end end end main.main = function() print("start time:",os.time()) , do main.testFunction() end print("end time:",os.time()) end main.main()
大概给出一个测试结果吧,环境是我的开发机器!
lua 调用C函数,每秒可以调用10000000次,大概1ms调用1k次。
lua 至于申请变量和 if else 判断,每秒可以调用100000000次,大概1ms调用1w次。迭代起与for循环相当!