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