lua程序性能优化(局部变量使用)

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操作,这样为代码的执行节省了时间。

  


展开阅读全文

没有更多推荐了,返回首页