Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Luajit脚本中加载字节码是否比加载字符串慢?_Lua_Luajit - Fatal编程技术网

在Luajit脚本中加载字节码是否比加载字符串慢?

在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

问题是:

我一直在测试两种类型的大文件(大约20MB)

第一个是字符串文件,其中包含大约4000个函数,如:

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