Lua 성능 최적화 Tips
Lua 공식 문서 요약 (fan yi) 을 바탕 으로 한 글 입 니 다 -)
Lua 의 속성 에 대하 여
So, Lua traverses all entries, counting and classifying them, and then chooses as the size of the array part the largest power of 2 such that more than half the elements of the array part are filled. The hash size is then the smallest power of 2 that can accommodate all the remaining entries (that is, those that did not fit into the array part).
기교.
기술 1 local 변 수 를 사용 합 니 다.
local 변 수 를 사용 합 니 다. a = a + b 를 예 로 들 면 a, b 가 전역 변수 일 때 a, b 가 국부 변수 일 때의 비 교 는 다음 과 같 습 니 다.
a = a + b;
GETGLOBAL 0 0 ; a
GETGLOBAL 1 1 ; b
ADD 0 0 1
SETGLOBAL 0 0 ; a
local a;
local b;
a = a +b;
ADD 0 0 1
로 컬 을 사용 하 는 것 이 세 번 부족 한 것 이 분명 합 니 다.
For instance, the code
for i = 1, 1000000 do
local x = math.sin(i)
end
아래 의 서법 보다 30% 느리다
local sin = math.sin
for i = 1, 1000000 do
local x = sin(i)
end
테크닉 2 테이블
Table rehash 의 횟수 를 줄 이기 위해 서 는 여러 번 의 할당 과 같은 구조 방법 을 직접 사용 할 수 있 습 니 다.
local param = {};
param.type = 1;
param.id = 1;
직접 값 을 부여 합 니 다. Lua 는 table 이 2 개의 요 소 를 수용 하고 해당 크기 의 table 을 새로 만들어 야 한 다 는 것 을 알 수 있 습 니 다.
local param = {type= 1, id = 1};
기술 3 문자열
table. concat 연결 문자열 사용 하기
테크닉 4 재 활용
이것 은 매개 변수 에 적용 되 는 방법 으로 호출 되 고 방법의 계산 결 과 를 저장 하여 중복 계산 을 방지 합 니 다.
function memoize (f)
local mem = {} -- memoizing table
setmetatable(mem, {__mode = "kv"}) -- make it weak
return function (x) -- new version of ’f’, with memoizing
local r = mem[x]
if r == nil then -- no previous result?
r = f(x) -- calls original function
mem[x] = r -- store result for reuse
end
return r
end
end
기술 5 쓰레기 회수
Lua 쓰레기 회수 속 도 는 메모리 소모 속도 와 정비례 한다.쓰레기 수 거 에 대해 서 는 두 개의 인터페이스 Lua
collectgarbage
와 C lua_gc
가 있 으 며, 쓰레기 수 거 를 일괄 처리 하거나 시간 에 민감 한 프로그램 에 사용 하지 않 는 다.참조 링크
Lua 공식 문서
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.