[READ-ONLY] Mirror of https://github.com/CanadaHonk/porffor. An ahead-of-time JavaScript compiler porffor.dev
Something went wrong. Try again.
JavaScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192const run = (func) => { for (let i = 0; i < 10_000_000; i++) { // func(i); func(i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i); }};
const zero = () => { Porffor.c`asm volatile("" ::: "memory");`; };const single = (a) => { Porffor.c`asm volatile("" ::: "memory");`; };const two = (a,b) => { Porffor.c`asm volatile("" ::: "memory");`; };const four = (a,b,c,d) => { Porffor.c`asm volatile("" ::: "memory");`; };const eight = (a,b,c,d,e,f,g,h) => { Porffor.c`asm volatile("" ::: "memory");`; };const sixteen = (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p) => { Porffor.c`asm volatile("" ::: "memory");`; };
console.log("argcount,direct,indirect");
let t17 = performance.now();for (let i = 0; i < 10_000_000; i++) { // noop}let t18 = performance.now();console.log("-1," + (t18 - t17).toFixed(2) + ",0");
let t21 = performance.now();for (let i = 0; i < 10_000_000; i++) { zero();}let t22 = performance.now();
let t19 = performance.now();run(zero);let t20 = performance.now();console.log("0," + (t22 - t21).toFixed(2) + "," + (t20 - t19).toFixed(2));
let t1 = performance.now();for (let i = 0; i < 10_000_000; i++) { single(i);}let t2 = performance.now();
let t9 = performance.now();run(single);let t10 = performance.now();console.log("1," + (t2 - t1).toFixed(2) + "," + (t10 - t9).toFixed(2));
let t3 = performance.now();for (let i = 0; i < 10_000_000; i++) { two(i,i);}let t4 = performance.now();
let t11 = performance.now();run(two);let t12 = performance.now();console.log("2," + (t4 - t3).toFixed(2) + "," + (t12 - t11).toFixed(2));
let t5 = performance.now();for (let i = 0; i < 10_000_000; i++) { four(i,i,i,i);}let t6 = performance.now();
let t13 = performance.now();run(four);let t14 = performance.now();console.log("4," + (t6 - t5).toFixed(2) + "," + (t14 - t13).toFixed(2));
let t7 = performance.now();for (let i = 0; i < 10_000_000; i++) { eight(i,i,i,i,i,i,i,i);}let t8 = performance.now();
let t15 = performance.now();run(eight);let t16 = performance.now();console.log("8," + (t8 - t7).toFixed(2) + "," + (t16 - t15).toFixed(2));
let t23 = performance.now();for (let i = 0; i < 10_000_000; i++) { sixteen(i,i,i,i,i,i,i,i,i,i,i,i,i,i,i,i);}let t24 = performance.now();
let t25 = performance.now();run(sixteen);let t26 = performance.now();console.log("16," + (t24 - t23).toFixed(2) + "," + (t26 - t25).toFixed(2));