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());
|
|
|