전역변수들을 지역변수화 하기 #
지역변수들은 상당히 빠른데, 이것은 지역변수가 인덱스를 사용하여 억세스되기 때문이다. 만약 가능하다면 전역변수들을 지역변수로 만들어라. (무시무시하지않은가?) 농담이 아니라, 그것은 엄청나게 잘 동작하며, 인덱스를 사용한 억세스는 언제나 해쉬 룩업을 사용한 검색보다 더 빨라지고 있다. 만약 하나의 변수 - GameState를 말하는 것임 - 가 C로부터의 억세스를 위한 전역변수가 될 필요가 있다면, 'local GSLocal = GameState'과 같은 부가적인 변수를 만들고 모듈안에 GSLocal를 사용해라. 이 테크닉은 또한 반복적으로 호출되는 함수들을 위해 사용될 수도 있다. 예를 들면,
명심! 이것은 또한 전역함수들에게도 동작한다. (표준 라이브러리 함수도 포함) 예를 들면,
x = { a=1,b=2 }
function foo()
local y=x
print( x.a )
print( y.b ) -- y가 지역 테이블이기 때문에 바로 이전의 print보다 더 빠르다
end
(Steve Dekorte) I just got around to playing with this and it works great. For example this code:
local i, v = next(t, nil) while i do i, v = next(t, i) end
local next = next local i, v = next(t, nil) while i do i, v = next(t, i) end
for i, v in t do end -- while문일때 보다 5배 빠르다








![[http]](/wiki/imgs/http.png)
