Tests:
  • Fib Base

    x
     
    const fibonacci = (n) => {
        if (n <= 1) return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
    };
    fibonacci(20);
  • Fib memoized 1

     
    const memoize = function(func) {
        var stringifyJson = JSON.stringify,
            cache = {};
        var cachedfun = function() {
            var hash = stringifyJson(arguments);
            return hash in cache ? cache[hash] : (cache[hash] = func.apply(this, arguments));
        };
        cachedfun.__cache = function() {
            cache.remove ||
                (cache.remove = function() {
                    var hash = stringifyJson(arguments);
                    return delete cache[hash];
                });
            return cache;
        }.call(this);
        return cachedfun;
    };
    const fibonacci = memoize((n) => {
        if (n <= 1) return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
    });
    fibonacci(20);
  • Fib memoized Tommy

     
    const memoize = function(func) {
        const cache= {}
        return (...args) => {
          const n = args[0]
          if (n in cache) {
            return cache[n];
          } else {
            const result = func(n)
            cache[n] = result
            return result
          }
        }
    };
    const fibonacci = memoize((n) => {
        if (n <= 1) return 1;
        return fibonacci(n - 1) + fibonacci(n - 2);
    });
    fibonacci(20);
Rendered benchmark preparation results:

Suite status: <idle, ready to run>

Previous results

Experimental features:

  • Test case name Result
    Fib Base
    Fib memoized 1
    Fib memoized Tommy

    Fastest: N/A

    Slowest: N/A

Latest run results:
Run details: (Test run date: 5 years ago)
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.87 Safari/537.36
Chrome 78 on Mac OS X 10.14.5
View result in a separate tab
Test name Executions per second
Fib Base 8829.5 Ops/sec
Fib memoized 1 46239.4 Ops/sec
Fib memoized Tommy 654223.2 Ops/sec