Lua - 慢字节码

时间:2014-03-24 22:42:31

标签: lua bytecode

我有3个文件x.lua,y.lua和main.lua。这些文件执行一些数学运算(递增和递减数)。当我运行命令

lua main.lua

快得多

luac -o main.luac -s x.lua y.lua main.lua

请你帮我解释为什么字节码会变慢?

2 个答案:

答案 0 :(得分:3)

我猜main.lua dofile("x.lua")require"x"y.lua相同。

在这种情况下,第二个表单会运行x.luay.lua两次。

答案 1 :(得分:1)

他们是非常不同的行动:

  1. lua main.lua:这样做
    • 读取3个文件,
    • 将它们编译为内存中的字节码和
    • 执行其字节码的子集;
  2. luac -o main.luac -s x.lua y.lua main.lua:这样做:
    • 读取3个文件(由于未执行main,因此未读取2个读取的文件),
    • 将它们编译为内存中的字节码,然后
    • 将其中三个保存到磁盘上的一个文件中。
  3. 编写文件(操作2)是一个缓慢的操作,涉及磁盘访问,转储内存块等;它将比执行某些字节码(操作1)慢得多,除非后者是计算密集型的。