level 2
Stephenmax
楼主
1.重入的问题
假设宿主程序调用lua脚本,然后lua脚本中调用了宿主程序的函数,该宿主程序中又调用了着一个或另外的lua脚本。
这种情况下,是不是只要每个压栈匹配一个退栈来使退回上层函数前恢复到上层函数的栈状态,即便用同一个lua state也是可以的是吗?还是为了避免重入每次宿主调用脚本都必须用不同的lua state?
以及这个问题相关的一个问题,lua的栈大小是自动增长的吗。还是必须手动调用lua_checkstack来自行确保剩余的栈空间?
2.脚本装载的问题
假设宿主程序性能敏感,我用luajit,我有一批脚本,宿主会频繁调用脚本,我想避免每次装载脚本时的开销,是不是我只要提前编译成字节码脚本,然后启动宿主时一次性的把所有脚本文件读入内存,每次用脚本时只要lua_loadbuffer就可以了?
在脚本已编译成字节码的情况下,执行lua_loadbuffer是不是非常快了?
还是需要其他办法,比如宿主程序启动时,一次性的把所有脚本全都读到栈上来?
谢谢大家
2014年09月23日 02点09分
1
假设宿主程序调用lua脚本,然后lua脚本中调用了宿主程序的函数,该宿主程序中又调用了着一个或另外的lua脚本。
这种情况下,是不是只要每个压栈匹配一个退栈来使退回上层函数前恢复到上层函数的栈状态,即便用同一个lua state也是可以的是吗?还是为了避免重入每次宿主调用脚本都必须用不同的lua state?
以及这个问题相关的一个问题,lua的栈大小是自动增长的吗。还是必须手动调用lua_checkstack来自行确保剩余的栈空间?
2.脚本装载的问题
假设宿主程序性能敏感,我用luajit,我有一批脚本,宿主会频繁调用脚本,我想避免每次装载脚本时的开销,是不是我只要提前编译成字节码脚本,然后启动宿主时一次性的把所有脚本文件读入内存,每次用脚本时只要lua_loadbuffer就可以了?
在脚本已编译成字节码的情况下,执行lua_loadbuffer是不是非常快了?
还是需要其他办法,比如宿主程序启动时,一次性的把所有脚本全都读到栈上来?
谢谢大家