【发布时间】:2014-07-01 01:13:05
【问题描述】:
我知道如何通过luaL_loadbuffer 加载 Lua 文件。现在我有很多Lua文件,100多个。我正在考虑如何加快加载过程。我想出的一种方法是:将所有文件合二为一,然后使用luaL_loadbuffer 加载此文件(我做了一些测试,但刚刚得到luaL_loadbuffer 返回的语法错误)。有人用过这种方法吗?或者有没有其他方法可以加快加载速度?
【问题讨论】:
-
使用
luac进行预编译应该可以加快加载速度。您还可以使用luac将多个文件合并为一个预编译文件,前提是您不使用require加载文件。 -
我研究了 luac 并做了一些练习。也许它可以解决速度问题,但它带来了另一个问题:便携性。根据 luac 文档,由 luac 创建的二进制文件只能在具有相同字长和字节顺序的架构之间移植。我正在开发一款手机游戏。便携性对此类应用很重要。
-
您可以使用 this 之类的东西将多个 Lua 文件合并为一个文件,并通过预处理器定义为最常见的架构提供预编译版本,并将合并的源代码作为其余文件的后备。我怀疑单独组合 Lua 文件会对加载速度产生很大影响。
-
预编译版本确实减少了很多加载时间。我测试在我的 android 手机(HTC G7)上加载由 32 位 win7 PC 生成的预编译文件。时间减少到9秒。在此之前,花了30多秒。但是我的手机无法加载64位win7 PC(操作系统为64位)生成的预编译文件。现在我对如何生成可移植的预编译文件很感兴趣。
-
@lhf:为什么要限制?我以为
package.preload会删除它...