2014-03-24 71 views
0

我有3個文件x.lua,y.lua和main.lua。這些文件做一些數學運算(增加和減少數字)。當我運行命令Lua - 緩慢的bytcode

lua main.lua

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

請快得多你能幫助我,爲什麼是字節碼慢?

+0

我們需要示例文件來顯示問題。 – Doub

回答

3

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

在這種情況下,第二種形式運行x.luay.lua兩次。

1

他們是非常不同的操作:

  1. lua main.lua:這確實
    • 讀取3個文件,
    • 編譯它們在內存字節碼
    • 執行他們的字節碼的子集;
  2. luac -o main.luac -s x.lua y.lua main.lua:這樣做:
    • 讀取3個文件(不執行由主讀因爲主不讀取的2),
    • 編譯他們在存儲器爲字節碼,然後
    • 可節省三個其中的一個文件在磁盤上。

寫入文件(操作2)是一個緩慢的操作,涉及到磁盤訪問,傾內存塊等;它將比執行一些字節碼(操作1)慢得多,除非後者是計算密集型的。

+0

謝謝,請問如何從3個其他文件中創建一個字節碼而不丟失速度 – Sallomon

+0

(2)只能讀取3個文件。 – lhf

+0

@lhf啊是的,因爲其他2次讀取僅作爲執行的一部分發生。更新。 – Schollii