JSFiddle - React, Tailwind, and code Playground

by dexygen

JavaScript

(function() {
    var itersDefault = 0,
        itersExtend = 0,
        elapsed = 0,
        elapsedDefault = 0,
        elapsedExtend = 0,
        randomBit,
        options,
        now,
        timeAfterFns = [timeAfterDefault, timeAfterExtend];

    for (var i=0; i<200000; i++) {
        randomBit = (Math.floor(Math.random() * 2));
        randomBit ? itersExtend++ : itersDefault++;
        options = undefined;             
        now = (new Date().getTime());
        elapsed = timeAfterFns[randomBit]() - now;
        randomBit ? elapsedExtend += elapsed : elapsedDefault += elapsed;
    }
    console.log('default');
    console.log('iters: ' + itersDefault);
    console.log('elapsed (total): ' + elapsedDefault);
    console.log('elasped (avg): ' + elapsedDefault/itersDefault);
    console.log('');
    console.log('extend');
    console.log('iters: ' + itersExtend);
    console.log('elapsed (total): ' + elapsedExtend);
    console.log('elapsed (avg): ' + elapsedExtend/itersExtend);
    
    function timeAfterDefault() {
        options = _.defaults(options || {}, {debounceTimeout: 1000});
        return (new Date()).getTime();
    }
    
    function timeAfterExtend() {
        options = _.extend({debounceTimeout: 1000}, options || {});
        return (new Date()).getTime();
    }
})();