ASM.js, is it dead? (v7)

Revision 7 of this benchmark created on


Setup

// Sane Summation
function saneSum(x) {
	
    var sum = 0;
    for (var j = 0; j < x; j++) {
        for (var i = 0; i < j; i++) {
            sum += i;
        }
    }
	return sum;
}

// Opti Summation
 function optiSum(x) {
 	x = x | 0;
    var i = 0;
    var sum = 0;
    var j = 0;
    for(j = 0; (j | 0) < (x | 0); j = ((j | 0) + 1) | 0) {
        for(i = 0; (i | 0) < (j | 0); i = ((i | 0) + 1) | 0) {
            sum = ((sum | 0) + (i | 0)) | 0;
        }
    }
    return sum | 0;
}

function ASMModule(stdlib, foreign, heap) {
    "use asm";

    function asmOptiSum(x) {
        x = x | 0;
        var i = 0;
        var sum = 0;
        var j = 0;
        for(j = 0; (j | 0) < (x | 0); j = ((j | 0) + 1) | 0) {
            for(i = 0; (i | 0) < (j | 0); i = ((i | 0) + 1) | 0) {
                sum = ((sum | 0) + (i | 0)) | 0;
            }
        }
        return sum | 0;
    }

     return { asmOptiSum: asmOptiSum };
}

var module = ASMModule(globalThis, {}, new ArrayBuffer(0));

Test runner

Ready to run.

Testing in
TestOps/sec
Normal, Sane Code
sum = saneSum(10000);
ready
Chad, ASM.js Code
sum = optiSum(10000);
ready
True ASM.js Code
sum = module.asmOptiSum(10000);
ready

Revisions

You can edit these tests or add more tests to this page by appending /edit to the URL.