fib nomal vs asm.js (v11)

Revision 11 of this benchmark created on


Setup

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;
  })();

Test runner

Ready to run.

Testing in
TestOps/sec
fib nomal
fibNomal(20);
ready
fib asm.js
fibAsmjs(20);
ready
fib asm.js less
fibAsmjsLess(20);
ready
fib asm.js direct
fibAsmjsDirect(20);
ready
fib asm.js more
fibAsmjsMore(20);
ready

Revisions

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