Lua - 慢的字节码

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

lua main.lua

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

要快得多。

请问有人能帮我解释为什么字节码更慢吗?

点赞
用户107090
用户107090

我猜 main.lua 中执行了 dofile("x.lua") 或者 require"x"y.lua 同理。

如果是这样,第二种形式会导致 x.luay.lua 被执行两次。

2014-03-25 00:08:44
用户869951
用户869951

它们是非常不同的操作:

  1. lua main.lua:它会

    • 读取 3 个文件,
    • 将它们编译成字节码并存储在内存中,并且
    • 执行其中一部分字节码;
  2. luac -o main.luac -s x.lua y.lua main.lua:它会:

    • 读取 3 个文件(但 main.lua 不会被执行,因此它所读取的另外两个文件也不会被读取),
    • 将这些文件编译成字节码并存储在内存中,并且
    • 将其中的三个文件保存到一个文件中。

写入文件(操作 2)是一个缓慢的操作,需要进行磁盘访问、存储内存块等操作;与执行一些字节码(操作 1)相比,除非后者是计算密集型的,否则它将显著慢得多。

2014-03-25 02:17:31