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