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 를 사용하며 속도상의 이점을 가져오는게
좋을 듯 합니다.

'프로그래밍' 카테고리의 다른 글

Three.js Object Load 방법  (0) 2020.11.21
블로그 이미지

캡틴토마스

그저 걷고 있는거지...

,