336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
과연 LuaJIT 가 2~10배 정도 속도가 나온다 나온다 말만 듣다가
이제서야 테스트를 해봅니다.
결과부터 말씀드리자면 상당히 놀라운 결과였습니다.
일단 테스트용 Lua 코드는 다음과 같습니다.
function TrafficTest()
for i = 0 , 10000, 1 do
iii = i * i*i*i*i*i*i*i*i*i*i*i
--중략, iii = i * i*i*i*i*i*i*i*i*i*i*i 와 같은 코드가 200라인 정도 있습니다.
end
end
테스트한 C++ 코드는 다음과 같습니다.
루아 팅커를 사용하여 lua 함수를 호출하였습니다.
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = lua_open();
luaL_openlibs(L);
int Start, End;
printf("LuaJIT Performance Test\n");
printf("case one, LuaJIT is activated\n");
//LuaJIT on, 디폴트 상태로 켜져있지만 명시적으로 한번 더 넣어주고 한다.
luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE|LUAJIT_MODE_ON);
lua_tinker::dofile(L, "TestFunction.lua");
Start = GetTickCount();
//루프의 수를 10, 100, 1000 순서대로 늘려가면서 복잡도를 증가시켰습니다.
for (int i = 0; i < 10; i++)
{
lua_tinker::call<void>(L, "TrafficTest");
}
End = GetTickCount();
printf("Process Time : %d\n", End - Start);
//Case Two JIT off
printf("case two, LuaJIT is deactivated\n");
luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE|LUAJIT_MODE_OFF);
lua_tinker::dofile(L, "TestFunction.lua");
Start = GetTickCount();
//루프의 수를 10, 100, 1000 순서대로 늘려가면서 복잡도를 증가시켰습니다.
for (int i = 0; i < 10; i++)
{
lua_tinker::call<void>(L, "TrafficTest");
}
End = GetTickCount();
printf("Process Time : %d\n", End - Start);
return 0;
}
결과는 경이적이다 못해 충격적(일천한 제 경험 탓 일수도 있습니다만, 이게 과연 스크립트언어인가 할 정도로)입니다.
10(c 루프 횟수) x 10000(lua 루프 횟수)
100(c 루프 횟수) x 10000(lua 루프 횟수)
1000(c 루프 횟수) x 10000(lua 루프 횟수)
서버/클라이언트 클라이언트를 막론하고, Lua 를 사용하며 속도상의 이점을 가져오는게
좋을 듯 합니다.
이제서야 테스트를 해봅니다.
결과부터 말씀드리자면 상당히 놀라운 결과였습니다.
일단 테스트용 Lua 코드는 다음과 같습니다.
function TrafficTest()
for i = 0 , 10000, 1 do
iii = i * i*i*i*i*i*i*i*i*i*i*i
--중략, iii = i * i*i*i*i*i*i*i*i*i*i*i 와 같은 코드가 200라인 정도 있습니다.
end
end
테스트한 C++ 코드는 다음과 같습니다.
루아 팅커를 사용하여 lua 함수를 호출하였습니다.
int _tmain(int argc, _TCHAR* argv[])
{
lua_State *L = lua_open();
luaL_openlibs(L);
int Start, End;
printf("LuaJIT Performance Test\n");
printf("case one, LuaJIT is activated\n");
//LuaJIT on, 디폴트 상태로 켜져있지만 명시적으로 한번 더 넣어주고 한다.
luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE|LUAJIT_MODE_ON);
lua_tinker::dofile(L, "TestFunction.lua");
Start = GetTickCount();
//루프의 수를 10, 100, 1000 순서대로 늘려가면서 복잡도를 증가시켰습니다.
for (int i = 0; i < 10; i++)
{
lua_tinker::call<void>(L, "TrafficTest");
}
End = GetTickCount();
printf("Process Time : %d\n", End - Start);
//Case Two JIT off
printf("case two, LuaJIT is deactivated\n");
luaJIT_setmode(L, 0, LUAJIT_MODE_ENGINE|LUAJIT_MODE_OFF);
lua_tinker::dofile(L, "TestFunction.lua");
Start = GetTickCount();
//루프의 수를 10, 100, 1000 순서대로 늘려가면서 복잡도를 증가시켰습니다.
for (int i = 0; i < 10; i++)
{
lua_tinker::call<void>(L, "TrafficTest");
}
End = GetTickCount();
printf("Process Time : %d\n", End - Start);
return 0;
}
결과는 경이적이다 못해 충격적(일천한 제 경험 탓 일수도 있습니다만, 이게 과연 스크립트언어인가 할 정도로)입니다.
10(c 루프 횟수) x 10000(lua 루프 횟수)
100(c 루프 횟수) x 10000(lua 루프 횟수)
1000(c 루프 횟수) x 10000(lua 루프 횟수)
서버/클라이언트 클라이언트를 막론하고, Lua 를 사용하며 속도상의 이점을 가져오는게
좋을 듯 합니다.
'프로그래밍' 카테고리의 다른 글
Three.js Object Load 방법 (0) | 2020.11.21 |
---|