asmjs

JavaScript performance comparison

Revision 14 of this test case created by Calvin

Info

(ignore)

Preparation code

<script>
var withasm = (function(stdlib){
 "use asm";
var imul = stdlib.Math.imul;
function mandlebrot(cx, cy, maxIter) {
        cx = cx|0;
        cy = cy|0;
        maxIter = maxIter|0;

        var iter=0;
        var xn= 0;
        var x = 0;
        var y = 0;

        while ( ((iter|0) < (maxIter|0))) {
            xn = ( imul(x,x) - imul(y,y) + cx)|0;
            y = (imul(imul(x,y),2) + cy)|0;
            x = xn|0;
if((imul(x,x) + imul(y,y))|0 < 4){
 return iter|0;
}
            iter=(iter+1)|0;
        }
       
        return iter|0;
    }
return {    mandlebrot: mandlebrot}
})(window);
var withoutasm = (function(stdlib){

var imul = stdlib.Math.imul;
function mandlebrot(cx, cy, maxIter) {
        cx = cx|0;
        cy = cy|0;
        maxIter = maxIter|0;

        var iter=0;
        var xn= 0;
        var x = 0;
        var y = 0;

        while ( ((iter|0) < (maxIter|0))) {
            xn = ( imul(x,x) - imul(y,y) + cx)|0;
            y = (imul(imul(x,y),2) + cy)|0;
            x = xn|0;
if((imul(x,x) + imul(y,y))|0 < 4){
 return iter|0;
}
            iter=(iter+1)|0;
        }
       
        return iter|0;
    }
return {    mandlebrot: mandlebrot}
})(window);

</script>

Test runner

Warning! For accurate results, please disable Firebug before running the tests. (Why?)

Java applet disabled.

Testing in unknown unknown
Test Ops/sec
asm
withasm.mandlebrot(0,0,500)
pending…
No ASM
withoutasm.mandlebrot(0,0,500)
pending…

Compare results of other browsers

Revisions

You can edit these tests or add even more tests to this page by appending /edit to the URL. Here’s a list of current revisions for this page:

0 comments

Add a comment