我正在使用Lua“C”API函数luaL_loadbuffer()
来运行Lua代码。
我有一小撮Lua块,我打了很多次。但每次我调用luaL_loadbuffer()
时,块都会被重新编译。这看起来非常低效。块引用的大多数代码都是预编译的,但为什么每次都需要重新编译块本身呢?我怎样才能避免这种重新编译?
我可以将预编译的块传递给luaL_loadbuffer()
吗?
我可以制作返回的Lua堆栈的完整副本并重新使用它吗?
还有其他一些聪明的方法吗?
答案 0 :(得分:2)
继续使用luaL_loadbuffer
加载脚本。 加载此处表示预编译。只需将程序中保留的功能保存在程序中的某个位置(如果可以的话,将其保留在堆栈中)。到了运行脚本的时候,lua_pushvalue
和lua_pcall
。
答案 1 :(得分:1)
使用luaL_loadstring
加载您使用luac预编译的二进制块。但请注意 - 这些二进制文件不能跨平台或Lua版本移植。