fib nomal vs asm.js

JavaScript performance comparison

Revision 11 of this test case created by

Preparation code


      
      <script>
Benchmark.prototype.setup = function() {
  var fibNomal = function fib(x) {
    if (x < 3) return 1;
    return fib(x - 2) + fib(x - 1);
  };
  
  var fibAsmjs = (function () {

    'use asm';
    function fib(x) {
      x = x | 0;
      if ((x | 0) < 3) return 1;
      return ((fib((x - 2) | 0) | 0) + (fib((x - 1) | 0) | 0)) | 0;
    }
    return fib;
  })();
  
  var fibAsmjsLess = (function () {

    'use asm';
    function fib(x) {
      x = x | 0;
      if (x < 3) return 1;
      return ((fib((x - 2) | 0) | 0) + (fib((x - 1) | 0) | 0)) | 0;
    }
    return fib;
  })();
  
  var fibAsmjsDirect = function (x) {

    'use asm';
    x = x | 0;
    if ((x | 0) < 3) return 1;
    return ((fibAsmjsDirect((x - 2) | 0) | 0) + (fibAsmjsDirect((x - 1) | 0) | 0)) | 0;
  };
  
  var fibAsmjsMore = (function () {

    'use asm';
    function fib(x) {
      x = x | 0;
      if ((x | 0) < (3 | 0)) return 1 | 0;
      return ((fib(((x | 0) - (2 | 0)) | 0) | 0) + (fib(((x | 0) - (1 | 0)) | 0) | 0)) | 0;
    }
    return fib;
  })();
  

};
</script>

Test runner

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

Java applet disabled.

Testing in CCBot 2.0.0 / Other 0.0.0
Test Ops/sec
fib nomal
fibNomal(20);
pending…
fib asm.js
fibAsmjs(20);
pending…
fib asm.js less
fibAsmjsLess(20);
pending…
fib asm.js direct
fibAsmjsDirect(20);
pending…
fib asm.js more
fibAsmjsMore(20);
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.

0 Comments