diff --git a/vendor/benchmark.js/benchmark.js b/vendor/benchmark.js/benchmark.js index d6333f4cd..9d71f6b2a 100644 --- a/vendor/benchmark.js/benchmark.js +++ b/vendor/benchmark.js/benchmark.js @@ -1,5 +1,5 @@ /*! - * Benchmark.js v2.0.0 + * Benchmark.js v2.0.0-pre * Copyright 2010-2015 Mathias Bynens * Based on JSLitmus.js, copyright Robert Kieffer * Modified by John-David Dalton @@ -53,8 +53,8 @@ /** Used to assign default `context` object properties. */ var contextProps = [ 'Array', 'Date', 'Function', 'Math', 'Object', 'RegExp', 'String', '_', - 'clearTimeout', 'chrome', 'chromium', 'document', 'java', 'navigator', - 'phantom', 'platform', 'process', 'runtime', 'setTimeout' + 'clearTimeout', 'chrome', 'chromium', 'document', 'navigator', 'phantom', + 'platform', 'process', 'runtime', 'setTimeout' ]; /** Used to avoid hz of Infinity. */ @@ -201,14 +201,6 @@ */ support.browser = doc && isHostType(context, 'navigator') && !isHostType(context, 'phantom'); - /** - * Detect if Java is enabled/exposed. - * - * @memberOf Benchmark.support - * @type boolean - */ - support.java = isClassOf(context.java, 'JavaPackage'); - /** * Detect if the Timers API exists. * @@ -499,7 +491,7 @@ * @param {*} value The value to clone. * @returns {*} The cloned value. */ - var cloneDeep = _.partial(_.cloneDeep, _, function(value) { + var cloneDeep = _.partial(_.cloneDeepWith || _.cloneDeep, _, function(value) { // Only clone primitives, arrays, and plain objects. return (_.isObject(value) && !_.isArray(value) && !_.isPlainObject(value)) ? value @@ -750,7 +742,6 @@ * @memberOf Benchmark * @param {Array} array The array to iterate over. * @param {Function|string} callback The function/alias called per iteration. - * @param {*} thisArg The `this` binding for the callback. * @returns {Array} A new array of values that passed callback filter. * @example * @@ -768,7 +759,7 @@ * // get benchmarks that completed without erroring * Benchmark.filter(benches, 'successful'); */ - function filter(array, callback, thisArg) { + function filter(array, callback) { if (callback === 'successful') { // Callback to exclude those that are errored, unrun, or have hz of Infinity. callback = function(bench) { @@ -786,7 +777,7 @@ return result[0].compare(bench) == 0; }); } - return _.filter(array, callback, thisArg); + return _.filter(array, callback); } /** @@ -1536,7 +1527,7 @@ id = bench.id, stats = bench.stats, size = stats.sample.length, - pm = support.java ? '+/-' : '\xb1', + pm = '\xb1', result = bench.name || (_.isNaN(id) ? id : ''); if (error) { @@ -1558,8 +1549,7 @@ * @returns {number} The time taken. */ function clock() { - var applet, - options = Benchmark.options, + var options = Benchmark.options, templateData = {}, timers = [{ 'ns': timer.ns, 'res': max(0.0015, getRes('ms')), 'unit': 'ms' }]; @@ -1582,16 +1572,6 @@ // Init `minTime` if needed. clone.minTime = bench.minTime || (bench.minTime = bench.options.minTime = options.minTime); - // Repair nanosecond timer. - // Some Chrome builds erase the `ns` variable after millions of executions. - if (applet) { - try { - timer.ns.nanoTime(); - } catch(e) { - // Use non-element to avoid issues with libs that augment them. - timer.ns = new applet.Packages.nano; - } - } // Compile in setup/teardown functions and the test loop. // Create a new compiled test, instead of using the cached `bench.compiled`, // to avoid potential engine optimizations enabled over the life of the test. @@ -1688,17 +1668,10 @@ // Use API of chosen timer. if (timer.unit == 'ns') { - if (timer.ns.nanoTime) { - _.assign(templateData, { - 'begin': interpolate('s#=n#.nanoTime()'), - 'end': interpolate('r#=(n#.nanoTime()-s#)/1e9') - }); - } else { - _.assign(templateData, { - 'begin': interpolate('s#=n#()'), - 'end': interpolate('r#=n#(s#);r#=r#[0]+(r#[1]/1e9)') - }); - } + _.assign(templateData, { + 'begin': interpolate('s#=n#()'), + 'end': interpolate('r#=n#(s#);r#=r#[0]+(r#[1]/1e9)') + }); } else if (timer.unit == 'us') { if (timer.ns.stop) { @@ -1769,14 +1742,9 @@ } else if (unit == 'ns') { divisor = 1e9; - if (ns.nanoTime) { - begin = ns.nanoTime(); - while (!(measured = ns.nanoTime() - begin)) {} - } else { - begin = (begin = ns())[0] + (begin[1] / divisor); - while (!(measured = ((measured = ns())[0] + (measured[1] / divisor)) - begin)) {} - divisor = 1; - } + begin = (begin = ns())[0] + (begin[1] / divisor); + while (!(measured = ((measured = ns())[0] + (measured[1] / divisor)) - begin)) {} + divisor = 1; } else if (ns.now) { begin = ns.now(); @@ -1786,8 +1754,7 @@ begin = new ns().getTime(); while (!(measured = new ns().getTime() - begin)) {} } - // Check for broken timers (`nanoTime` may have issues). - // For more information see http://alivebutsleepy.srnet.cz/unreliable-system-nanotime/. + // Check for broken timers. if (measured > 0) { sample.push(measured); } else { @@ -1809,18 +1776,6 @@ /*----------------------------------------------------------------------*/ - // Detect nanosecond support from a Java applet. - _.find(doc && _.union(doc.applets, doc.embeds, doc.getElementsByTagName('object')) || [], function(element) { - return timer.ns = applet = 'nanoTime' in element && element; - }); - - // Check type in case Safari returns an object instead of a number. - try { - if (typeof timer.ns.nanoTime() == 'number') { - timers.push({ 'ns': timer.ns, 'res': getRes('ns'), 'unit': 'ns' }); - } - } catch(e) {} - // Detect Chrome's microsecond timer: // enable benchmarking via the --enable-benchmarking command // line switch in at least Chrome 7 to use chrome.Interval @@ -1841,10 +1796,6 @@ // Pick timer with highest resolution. timer = (_.minBy || _.min)(timers, 'res'); - // Remove unused applet. - if (timer.unit != 'ns' && applet) { - applet = destroyElement(applet); - } // Error if there are no working timers. if (timer.res == Infinity) { throw new Error('Benchmark.js was unable to find a working timer.'); @@ -2333,7 +2284,7 @@ * @memberOf Benchmark * @type string */ - 'version': '2.0.0' + 'version': '2.0.0-pre' }); _.assign(Benchmark, { diff --git a/vendor/benchmark.js/nano.jar b/vendor/benchmark.js/nano.jar deleted file mode 100644 index 442bbe10a..000000000 Binary files a/vendor/benchmark.js/nano.jar and /dev/null differ