알려진 바에 의하면, Lua는 C 코드 보다 10배정도 느리다고 한다.
에픽에 따르면 Unreal스크립트는 C++코드에 비해 20배(코딩속도?ㅋㅋ) 정도의 성능을 낼 수 있다고 주장하고 있다.

Lua는 5.0.2 Unreal스크립트는 언리얼 토너먼트 2004 build 3323
그리고 C++테스트는 Microsoft Visual C++ .NET 2003을 사용하였으며
모든 테스트는 P4 2.8GHz 1GB 메모리에서 수행되었다.

이 테스트에 따르면 Lua가 Unreal스크립트에 비해 24% 정도 빨랐다고 하더라
꽤오래전에 수행되어진 테스트인데 Unreal스크립트가 어느정도 발전했을지 궁금해지네

Lua를 Unreal엔진에 올리는게 가능하면 성능테스트하고 결과 알려줄게.

여기에는 배열 접근 테스트만 되어 있는데 아직 테스트 되지 않은 부분도
적당한 코드를 찾으면  해볼게.

Heapsort

Method Calls

Nested Loops

Object Instantiation

String Concatenation

Array Access

The Lua5 benchmark for Array Access in the shootout has a bug (a superfloues "+ 1" in Line 10 ). I've corrected it for the test below.

C++

// -*- mode: c++ -*-
// $Id: ary3.g++,v 1.2 2001/06/20 03:20:02 doug Exp $ // http://www.bagley.org/~doug/shootout/

#include <iostream>
#include <vector>

using namespace std;

int main(int argc, char *argv[]) {
    int i, k, n = ((argc == 2) ? atoi(argv[1]) : 1);
    typedef vector<int> ARY;
    ARY x(n);
    ARY y(n);

    for (i=0; i<n; i++) {
    x[i] = i + 1;
    }
    for (k=0; k<1000; k++) {
    for (int i = n - 1; i >= 0; --i) {
        y[i] += x[i];
    }
    }

    cout << y[0] << " " << y.back() << endl; }
Results:
n = 1000, 0.0306s
n = 3000, 0.03188s
n = 5000, 0.03564s
n = 7000, 0.03876s
Unreal

static final function string ArrayTest( optional int n ) {
        local int i, k;
        local array<int> x;
        local array<int> y;

        if ( n == 0 ) {
                n = 1;
        }

        x.Length = n;
        y.Length = n;

    for ( i = 0; i < n; i++ ) {
            x[i] = i + 1;
    }

    for ( k=0; k<1000; k++ ) {
            for (i = n-1; i >= 0; i--) {
                 y[i] += x[i];
            }
    }

        return ( y[0]$ " " $y[n-1] );
}
Results:
n = 1000, 0.27252s
n = 3000, 0.81316s
n = 5000, <runaway loop error>
n = 7000, <runaway loop="" error>

Unreal스크립트는 루프 수행을 3000회 이상 할 수 없도록 보호 하고 있었다. 그래서 거기까지 테스트할 수 밖에 없었다.

Lua

function array_test( n )

        local x, y = {}, {}

        for i=1,n do
                x[i] = i
                y[i] = 0
        end

        for k=1,1000 do
                for j=n,1,-1 do
                        y[j] = y[j] + x[j]
                end
        end

        return y[1] .. " " .. y[n]
end
Results:
n = 1000, 0.21872s
n = 3000, 0.65432s
n = 5000, 1.09124s
n = 7000, 1.52688s="">