任何人都可以通过LuaInterface的 dostring()
功能而不是 {加载一个将被重复调用到内存中以执行的lua脚本,从而合理地期望任何性能提升。 {1}}
我是否认为通过减少每次迭代的文件系统访问权限会更好?
是否有某种方法可以在 Lua VM 中缓存脚本?
答案 0 :(得分:1)
我是否认为通过减少每次迭代的文件系统访问权限会更好?
一般来说,你应该进行基准测试而不是假设,但这是非常切割和干燥:“磁盘IO,编译,执行”与“执行”。当然后者会更快。
有没有办法在Lua VM中缓存脚本?
您的脚本生成的任何全局变量dofile
或dostring
是否可供您阅读/调用。如果要避免脚本修改VM的全局命名空间,可以公开脚本可以调用的API例程(在主机中)以注册回调。
答案 1 :(得分:1)
如果你想多次执行一些lua代码,更好的方法是使用LoadFile OR LoadString。 将lua代码加载为LuaFunction,如:
LuaFunction lf = xxx.LoadString("some lua code"); // xxx is an instance of LuaInterface
lf.Call(); // you can also deliver some arguments
这比DoFile和DoString快得多。 因为它只需要一次编译。