You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
230 lines
2.7 KiB
230 lines
2.7 KiB
// Set of benchmarks
|
|
|
|
sysSetDesiredMemoryUsageHard(16 * 1024, 1);
|
|
sysSetDesiredMemoryUsageSoft(sysGetDesiredMemoryUsageHard());
|
|
|
|
//
|
|
//
|
|
// ACKERMAN
|
|
//
|
|
//
|
|
|
|
print("*** ACKERMAN ***");
|
|
|
|
global Ack = function(M, N)
|
|
{
|
|
if (M == 0)
|
|
{
|
|
N=N+1;
|
|
return(N);
|
|
}
|
|
|
|
if (N == 0)
|
|
{
|
|
M=M-1;
|
|
return(Ack(M, 1));
|
|
}
|
|
N=N-1;
|
|
return (Ack(M-1, Ack(M, N)));
|
|
};
|
|
|
|
NUM = 8;
|
|
TICK(); //GD Used to be clock() what was that matt?
|
|
print(Ack(3,NUM));
|
|
print("time = ", TICK());
|
|
|
|
//
|
|
//
|
|
// FIB
|
|
//
|
|
//
|
|
|
|
print("*** FIB ***");
|
|
|
|
global fib = function(n)
|
|
{
|
|
if (n < 2) { return(1); }
|
|
return fib(n-2) + fib(n-1);
|
|
};
|
|
|
|
N = 32;
|
|
TICK();
|
|
print(fib(N));
|
|
print("time = ", TICK());
|
|
|
|
//
|
|
//
|
|
// MATRIX
|
|
//
|
|
//
|
|
|
|
print("*** MATRIX ***");
|
|
|
|
local n = 300;
|
|
local size = 30;
|
|
|
|
mkmatrix = function(rows, cols)
|
|
{
|
|
count = 1;
|
|
mx = table();
|
|
|
|
for(i=0; i < rows; i=i+1)
|
|
{
|
|
row = table();
|
|
for(j = 0; j < cols; j=j+1)
|
|
{
|
|
row[j] = count;
|
|
count=count+1;
|
|
}
|
|
mx[i] = row;
|
|
}
|
|
return mx;
|
|
};
|
|
|
|
mmult = function(rows, cols, m1, m2)
|
|
{
|
|
m3 = table();
|
|
|
|
for(i = 0; i < rows; i=i+1)
|
|
{
|
|
m3[i] = table();
|
|
m1_i = m1[i];
|
|
for(j = 0; j < cols; j=j+1)
|
|
{
|
|
rowj = 0;
|
|
for(k = 0; k < cols; k=k+1)
|
|
{
|
|
rowj = rowj + m1_i[k] * m2[k][j];
|
|
}
|
|
m3[i][j] = rowj;
|
|
}
|
|
}
|
|
|
|
return m3;
|
|
};
|
|
|
|
TICK();
|
|
m1 = mkmatrix(size, size);
|
|
m2 = mkmatrix(size, size);
|
|
|
|
for(i = 0; i < n; i=i+1)
|
|
{
|
|
mm = mmult(size, size, m1, m2);
|
|
}
|
|
|
|
t = TICK();
|
|
|
|
print(mm[0][0], mm[2][3], mm[3][2], mm[4][4]);
|
|
print("time = ", t);
|
|
|
|
//
|
|
//
|
|
// HASH
|
|
//
|
|
//
|
|
|
|
print("*** HASH ***");
|
|
|
|
local n = 80000;
|
|
TICK();
|
|
|
|
X=table();
|
|
for(i=1; i <= n; i=i+1)
|
|
{
|
|
//print(format("%x", i), i);
|
|
X[format("%x", i)] = i;
|
|
}
|
|
|
|
c = 0;
|
|
|
|
for(i=n; i>=1; i=i-1)
|
|
{
|
|
if(X[i+""])
|
|
{
|
|
c=c+1;
|
|
}
|
|
}
|
|
|
|
print(c);
|
|
print("time = ", TICK());
|
|
|
|
//
|
|
//
|
|
// HEAPSORT
|
|
//
|
|
//
|
|
|
|
print("*** HEAPSORT ***");
|
|
|
|
global IM = 139968.;
|
|
global IA = 3877.;
|
|
global IC = 29573.;
|
|
global LAST = 42.;
|
|
|
|
gen_random = function(max)
|
|
{
|
|
global LAST = (LAST * IA + IC) % IM;
|
|
return ((max * LAST) / IM);
|
|
};
|
|
|
|
heapsort = function(n, ra)
|
|
{
|
|
l = n/2 + 1;
|
|
ir = n;
|
|
|
|
for(;;)
|
|
{
|
|
if(l > 1)
|
|
{
|
|
l=l-1;
|
|
rra = ra[l];
|
|
}
|
|
else
|
|
{
|
|
rra = ra[ir];
|
|
ra[ir] = ra[1];
|
|
ir=ir-1;
|
|
if(ir == 1)
|
|
{
|
|
ra[1] = rra;
|
|
return;
|
|
}
|
|
}
|
|
|
|
i = l;
|
|
j = l * 2;
|
|
while(j <= ir)
|
|
{
|
|
if(j < ir and ra[j] < ra[j+1])
|
|
{
|
|
j=j+1;
|
|
}
|
|
if(rra < ra[j])
|
|
{
|
|
ra[i] = ra[j];
|
|
i = j;
|
|
j = j + i;
|
|
}
|
|
else
|
|
{
|
|
j = ir + 1;
|
|
}
|
|
}
|
|
|
|
ra[i] = rra;
|
|
}
|
|
};
|
|
|
|
TICK();
|
|
|
|
local ary = table();
|
|
local N = 80000;
|
|
|
|
for(i = 0; i < N; i=i+1)
|
|
{
|
|
ary[i] = gen_random(1.0);
|
|
}
|
|
|
|
heapsort(N, ary);
|
|
print(ary[N-1]);
|
|
print("time = ", TICK());
|