如何预编译传递给 luaL_loadbuffer() 的 Lua?
How can I pre-compile the Lua that I pass to luaL_loadbuffer()?
我正在使用 Lua "C" API 函数 luaL_loadbuffer()
来运行 Lua 代码。
我有一小部分 Lua 块,我调用了很多很多次。但是每次我调用 luaL_loadbuffer()
块都会重新编译。这似乎非常低效。 chunk 引用的大部分代码都是预编译的,但为什么每次都需要重新编译 chunk 本身呢?我怎样才能避免这种重新编译?
我可以将预编译块传递给 luaL_loadbuffer()
吗?
我可以制作返回的 Lua 堆栈的完整副本并重新使用吗?
还有其他聪明的方法吗?
使用luaL_loadstring
加载你用luac预编译的二进制块。但要注意 - 这些二进制文件不能跨平台或 Lua 版本移植。
继续使用luaL_loadbuffer
加载脚本。 Load这里的意思是预编译。只需将留在堆栈中的函数保存在程序中的某处(或者如果可以的话,将其留在堆栈中)。到时候运行一个脚本,lua_pushvalue
和lua_pcall
就可以了。
我正在使用 Lua "C" API 函数 luaL_loadbuffer()
来运行 Lua 代码。
我有一小部分 Lua 块,我调用了很多很多次。但是每次我调用 luaL_loadbuffer()
块都会重新编译。这似乎非常低效。 chunk 引用的大部分代码都是预编译的,但为什么每次都需要重新编译 chunk 本身呢?我怎样才能避免这种重新编译?
我可以将预编译块传递给 luaL_loadbuffer()
吗?
我可以制作返回的 Lua 堆栈的完整副本并重新使用吗?
还有其他聪明的方法吗?
使用luaL_loadstring
加载你用luac预编译的二进制块。但要注意 - 这些二进制文件不能跨平台或 Lua 版本移植。
继续使用luaL_loadbuffer
加载脚本。 Load这里的意思是预编译。只需将留在堆栈中的函数保存在程序中的某处(或者如果可以的话,将其留在堆栈中)。到时候运行一个脚本,lua_pushvalue
和lua_pcall
就可以了。