asmjs

JavaScript performance comparison

Revision 15 of this test case created by Calvin Metcalf and last updated

Info

(ignore)

Preparation code

<script>
var withasm = (function(stdlib){
 "use asm";

function mandlebrotX(x, y,cx) {
        x = +x;
y=+y;
        cx = +cx;
       return +( x*x - y*y + cx);
    }
function mandlebrotY(x,y,cy){
x=+x;
y=+y;
cy=+cy;
 return +(x*y*2.0 + cy);
}
function mandlebrot(cx, cy, maxIter) {
        cx = +cx;
        cy = +cy;
        maxIter = maxIter|0;

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

        while ( ((iter|0) < (maxIter|0))) {
            xn =  mandlebrotX(x, y,cx);
            y =  mandlebrotY(x, y,cy);
            x = +xn;
if((x*x + y*y) > 4.0){
 return iter|0;
}
            iter=(iter+1)|0;
        }
       
        return iter|0;
    }
return {    mandlebrot: mandlebrot}
})(window);
var withoutasm = (function(stdlib){


function mandlebrotX(x, y,cx) {
        x = +x;
y=+y;
        cx = +cx;
       return +( x*x - y*y + cx);
    }
function mandlebrotY(x,y,cy){
x=+x;
y=+y;
cy=+cy;
 return +(x*y*2.0 + cy);
}
function mandlebrot(cx, cy, maxIter) {
        cx = +cx;
        cy = +cy;
        maxIter = maxIter|0;

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

        while ( ((iter|0) < (maxIter|0))) {
            xn =  mandlebrotX(x, y,cx);
            y =  mandlebrotY(x, y,cy);
            x = +xn;
if((x*x + y*y) > 4.0){
 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.1,0.1,500);
pending…
No ASM
withoutasm.mandlebrot(0.1,0.1,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