c - 复制lua函数的开销

标签 c lua

我有很多 lua 脚本,它们的名称与函数名称相同(用于“入口点”),我想运行它们。但我想尽快完成。

经过一些浏览/谷歌搜索/思考后,我有两个解决方案。

1.,我有一个主要的lua_State。我将所有必要的给定和我自己的库/函数“加载”到其中。接下来我 lua_dump() 当前 lua 脚本的 lua_State 函数(使用链表作为 chunck 容器),然后我 lua_load() 到主 lua_State,然后 lua_call() 到主 lua_State。使用此解决方案,我不必为所有脚本加载所有库。所以主要的lua_State是一个“环境”。 :)

2.,我只是为所有 lua_State 加载库。然后 lua_call() 它们。

问题是:即使第一个逻辑正确吗?如果是,您会使用哪一个?有更好的解决方案吗?

先谢谢了,对不起我的英语不好。

(如果第一个真的是正确的,是否存在一些不经意的优化可能性?)

最佳答案

正如您所说,我不明白您为什么想要超过 1 个 Lua 状态。如果你只有一个 Lua 状态,那么所有的开销就是加载库(一次),然后从你运行的脚本中加载函数(一次,除非你需要从文件中“刷新”它们)。所以只需要 1 个状态,然后dofile 脚本。

如果你真的需要那些多个 lua_States,你可以只加载你需要的库,如解释的那样 in the Lua Reference Manual, in the paragraph just above 5.1

Lua Gems Book 中还有一章关于 Lua 代码优化的不错的免费章节。 .

关于c - 复制lua函数的开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7348552/

相关文章:

c - 在C函数中传递Char指针

创建二叉搜索树而不更新指针

lua - 无法修改lua中的循环变量

lua - 真棒 WM : Placing tiled clients in specific order on startup

c - 在 Lua 中创建大型位数组的最佳方式

c - 你如何根据用户输入打印不同的东西?

c - C 中的系统命令,如何在 ""之间的字符串内传递指针

c++ - 是否有像 : is the memory readonly or accesible by current process? 这样的运行时断言

lua - Tarantool:index.indexName:pairs 调用中的限制/偏移

c++ - luaL_checkudata继承检查