在Luajit脚本中加载字节码是否比加载字符串慢?
问题是: 我一直在测试两种类型的大文件(大约20MB) 第一个是字符串文件,其中包含大约4000个函数,如:在Luajit脚本中加载字节码是否比加载字符串慢?,lua,luajit,Lua,Luajit,问题是: 我一直在测试两种类型的大文件(大约20MB) 第一个是字符串文件,其中包含大约4000个函数,如: function dostuff1() <simple lua script> end function dostuff2() <simple lua script> end 然后,我使用以下方法将每个文件(加载时间)测试到各自的环境中: local env = {} local chunk = loadfile( filename, 'bt
function dostuff1()
<simple lua script>
end
function dostuff2()
<simple lua script>
end
然后,我使用以下方法将每个文件(加载时间)测试到各自的环境中:
local env = {}
local chunk = loadfile( filename, 'bt', env )
assert(pcall(chunk()))
字符串文件的加载和处理速度明显快于字节码文件。这似乎与我的预期背道而驰。这是一个比较的小样本。注意:某些文件中的函数比其他文件更复杂(因此存在时间差)
字符串文件:
'# File Load+Run: ' 'test.tbl1' ' Time: ' 0.72784 ' Size:' 20877534
'# File Load+Run: ' 'test.tbl2' ' Time: ' 0.686193 ' Size:' 20880495
'# File Load+Run: ' 'test.tbl3' ' Time: ' 1.109813 ' Size:' 20824589
'# File Load+Run: ' 'test.tbl4' ' Time: ' 1.582231 ' Size:' 20827788
字节码文件:
'# File Load+Run: ' 'test.out1' ' Time: ' 0.379144 ' Size:' 17521943
'# File Load+Run: ' 'test.out2' ' Time: ' 0.95122 ' Size:' 17519371
'# File Load+Run: ' 'test.out3' ' Time: ' 2.954594 ' Size:' 18333035
'# File Load+Run: ' 'test.out4' ' Time: ' 7.236041 ' Size:' 18327247
奇怪的是,第一个文件的字节码速度更快(这正是我所期望的)
这能解释清楚吗?我已经搜索了很多地方(特别是这里),没有找到任何类似的讨论(请告诉我是否有) 您是否尝试过比较GC关闭的时间
collectgarbage(“stop”)
?由于系统的其他部分,您是否需要打开GC,因此很难进行测试。也许我能提取并测试一下。从我们看到的情况来看。当字节码被解析时,看起来额外的操作正在发生。开始研究其他一些Lua字节码编译器和类似的编译器,其中大多数都在Lua的C端运行,而不是脚本端。
'# File Load+Run: ' 'test.out1' ' Time: ' 0.379144 ' Size:' 17521943
'# File Load+Run: ' 'test.out2' ' Time: ' 0.95122 ' Size:' 17519371
'# File Load+Run: ' 'test.out3' ' Time: ' 2.954594 ' Size:' 18333035
'# File Load+Run: ' 'test.out4' ' Time: ' 7.236041 ' Size:' 18327247