原文:http://mobile.51cto.com/iphone-285909.htm
C调用lua脚本效率测试是本文要介绍的内容,以下代码以C语言为基准,测试了C调用Lua循环和循环调用Lua的效率。结论是不要频繁地穿越C/Lua边界.
#include <time.h> extern "C" { #include "lua.h" #include "lualib.h" #include "lauxlib.h" }/* Lua解释器指针 */ const char LUA_SCRIPT[] = "function loop_add(a, b) " " local sum = 0 " " for i = 1, 10000000 do " " sumsum = sum + a + b " " end " " return sum " "end " " " "function add(a, b) " " return a + b " "end " ; // lua 脚本里面的函数由C调用 int use_lua_add(lua_State *L, const char *func_name, int x, int y) { int sum; /* 通过名字得到Lua函数 */ lua_getglobal(L, func_name); /* 第一个参数 */ lua_pushnumber(L, x); /* 第二个参数 */ lua_pushnumber(L, y); /* 调用函数,告知有两个参数,一个返回值 */ lua_call(L, 2, 1); /* 得到结果 */ sum = (int)lua_tointeger(L, -1); lua_pop(L, 1); return sum; } int main() { int i, sum = 0; clock_t tStart, tStop; lua_State *L = lua_open(); /* opens Lua */ luaL_openlibs(L); if (luaL_dostring(L, LUA_SCRIPT)) // Run lua script { printf("run script failed/n"); lua_close(L); return -1; } sum = 0; tStart = clock(); for (i = 0; i < 10000000; i++) { sum += 1 + 1; } tStop = clock(); printf("C++: %dms./nThe sum is %u./n", (tStop - tStart) * 1000 / CLOCKS_PER_SEC, sum); sum = 0; tStart = clock(); sum = use_lua_add(L, "loop_add", 1, 1); tStop = clock(); printf("Lua loop_add: %dms./nThe sum is %u./n", (tStop - tStart) * 1000 / CLOCKS_PER_SEC, sum); sum = 0; tStart = clock(); for (i = 0; i < 10000000; i++) { sum += use_lua_add(L, "add", 1, 1); } tStop = clock(); printf("Loop lua add: %dms./nThe sum is %u./n", (tStop - tStart) * 1000 / CLOCKS_PER_SEC, sum); lua_close(L); return 0; }
运行结果:
C++: 31ms.
The sum is 20000000.
Lua loop_add: 437ms.
The sum is 20000000.
Loop lua add: 2360ms.
The sum is 20000000.
相关推荐
简要实现了C/C++中调用Lua脚本的技术。 通过用Lua脚本输出一个便签,来研究C/C++与Lua的交互技术。
在Linux底下,从C语言调用Lua代码的一个简单例子。
delph调用lua脚本,在delphixe3下通过
windows下使用mingw的gcc编译工具,使用测试代码实现使用c调用lua脚本,包括传入参数和返回值的模式和无参数传递的模式的具体实现。
vs2010调用lua脚本的基本应用,仅仅是一个基本的脚本调用框架模型
stm32f103移植lua解释器,能够在片上运行lua语言脚本。 欢迎大家下载、学习、交流。
lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问文件哈哈哈lua脚本问...
该程序实现脚本语言与C++的结合简单结合 通过vc程序调用lua脚本 实现功能 ps:对于入门研究人员可能是必要好的示例
里面有mdlLua.bas模块,这个模块是 通过lua公开原的C语言头文件lua.h进行翻译过来的,直接翻译成VB版,纪念曾经的VB梦工厂。哈哈。
c#调用脚本语言Lua——简单Demo 配置: 1. 下载c#下的Lua支持类库。下载地址:http://files.luaforge.net/releases/luainterface/luainterface/2.0.3 将(lua51.dll\LuaInterface.dll)引用自己的项目中。 2. 修改...
LUA脚本支持库|LUA脚本支持库
Lua脚本可以很容易的被C/C++代码调用,也可以反过来调用C/C++的函数,这使得Lua在应用程序中可以被广泛应用。不仅仅作为扩展脚本,也可以作为普通的配置文件,代替XML,Ini等文件格式,并且更容易理解和维护。 Lua由...
Cocos2d-x中使用Lua脚本的初步使用,在Cocos2d-x中访问Lua脚本中的变量
天龙八部全套源码 控制台 lua脚本 测试模块 可以用于学习,有很高的参考价值
OpenWrt UCI详解,包含uci命令的基本操作,c语言、lua语言调用uci接口实例
[redis 调用Lua脚本](#redis 调用Lua脚本) [redis+lua 实现评分排行榜实时更新](#redis+lua 实现评分排行榜实时更新) [lua 脚本](#lua 脚本) Golang调用redis+lua示例 byte切片与string的转换优化 redis 调用...
lua动态链接库的编译 c++调用lua的的方法 linux中调用lua的环境配置
适用于lua脚本的解密
最简单的C++调用Lua配置.!