LuaInterface C#:dostring vs dofile。是否值得加载一个将被多次调用到内存中的脚本?

时间:2013-02-19 13:40:21

标签: c# lua luainterface

任何人都可以通过LuaInterface的 dostring() 功能而不是 {加载一个将被重复调用到内存中以执行的lua脚本,从而合理地期望任何性能提升。 {1}}

我是否认为通过减少每次迭代的文件系统访问权限会更好?

是否有某种方法可以在 Lua VM 中缓存脚本?

2 个答案:

答案 0 :(得分:1)

  

我是否认为通过减少每次迭代的文件系统访问权限会更好?

一般来说,你应该进行基准测试而不是假设,但这是非常切割和干燥:“磁盘IO,编译,执行”与“执行”。当然后者会更快。

  

有没有办法在Lua VM中缓存脚本?

您的脚本生成的任何全局变量dofiledostring是否可供您阅读/调用。如果要避免脚本修改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快得多。 因为它只需要一次编译。