lua程式效能優化 區域性變數使用

2021-06-19 18:15:55 字數 1495 閱讀 6244

1、區域性變數優化

**一

for i = 1, 1000000 do 

local x = math.sin(i)

end

編譯後**

1       [1]     loadk           0 -1    ; 1

2 [1] loadk 1 -2 ; 1000000

3 [1] loadk 2 -1 ; 1

4 [1] forprep 0 4 ; to 9

5 [2] getglobal 4 -3 ; math

6 [2] gettable 4 4 -4 ; "sin"

7 [2] move 5 3

8 [2] call 4 2 2

9 [1] forloop 0 -5 ; to 5

10 [3] return 0 1

**二

local sin = math.sin

for i = 1, 1000000 do 

local x = sin(i)

end

編碼後**

1       [1]     getglobal       0 -1    ; math 迴圈中的**被放在外部執行

2 [1] gettable 0 0 -2 ; "sin"

3 [2] loadk 1 -3 ; 1

4 [2] loadk 2 -4 ; 1000000

5 [2] loadk 3 -3 ; 1

6 [2] forprep 1 3 ; to 10

7 [3] move 5 0

迴圈中增加了移動的**

8 [3] move 6 4

9 [3] call 5 2 2

10 [2] forloop 1 -4 ; to 7

11 [4] return 0 1

可以看出getglobal、gettable兩個操作被移到了迴圈之外,而增加了乙個move操作,這樣為**的執行節省了時間。

lua程式效能優化 尾呼叫

function func local value math.abs 1 return value endfunction func1 local value func return value endfunc1 不使用尾呼叫的函式編譯後指令如下 f luac l a.lua main 7 inst...

程式效能優化 區域性性原理

乙個編寫良好的電腦程式常常具有良好的區域性性,它們傾向於引用最近引用過的資料項附近的資料項,或者最近引用過的資料項本身,這種傾向性,被稱為區域性性原理。有良好區域性性的程式比區域性性差的程式執行得更快。時間區域性性示例 function sum arry return sum 在這個例子中,變數su...

程式效能優化 區域性性原理

概念 乙個編寫良好的電腦程式常常具有良好的區域性性,它們傾向於引用最近引用過的資料項附近的資料項,或者最近引用過的資料項本身,這種傾向性,被稱為區域性性原理。有良好區域性性的程式比區域性性差的程式執行得更快。區域性性通常有兩種不同的形式 時間區域性性 在乙個具有良好時間區域性性的程式中,被引用過一次...