// Timing test for four 0..MAXSPRITES-1 access loops,
// fwd->back->fwd->back.
// Results with a LTO=1 RELEASE=1 C-CON build on x86: 42 ms for N=10.
// (Compare with Lunatic results in test.elua)

define N 10
gamevar n 0 0
gamevar i 0 0
gamevar t 0 0
gamevar t2 0 0
define MAXSPRITES 16384
define MAXSPRM1 16383  // MAXSPRITES-1

onevent EVENT_ENTERLEVEL
    getticks t

    setvar n 0
    whilevarn n N
    {
        setvar i 0
        whilevarvarn i MAXSPRITES
        {
            setactor[i].detail 1
            addvar i 1
        }

        setvar i MAXSPRM1
        whilevarvarn i -1
        {
            setactor[i].shade 1
            subvar i 1
        }

        setvar i 0
        whilevarvarn i MAXSPRITES
        {
            setactor[i].xoffset 0
            addvar i 1
        }

        setvar i MAXSPRM1
        whilevarvarn i -1
        {
            setactor[i].yoffset 0
            subvar i 1
        }

        addvar n 1
    }

    getticks t2
    subvarvar t2 t

    // qsprintf test
    redefinequote 116 0..MAXSPITES-1
    redefinequote 117 in total

    redefinequote 114 %d x four %s iterations took %d ms %s
    qsprintf 115 /*<-*/ 114 /*args:*/ n 116 t2 117

    echo 115
endevent