JavaScripting

The definitive source of the best
JavaScript libraries, frameworks, and plugins.


  • ×

    Benchmark.js

    A benchmarking library that works on nearly all JavaScript platforms, supports high-resolution timers, and returns statistically significant results. As used on jsPerf.com.
    Filed under  › 

    • 🔾66%Overall
    • 5,492
    • 30.7 days
    • 🕩333
    • 👥13

    Benchmark.js v2.1.4

    A robust benchmarking library that supports high-resolution timers & returns statistically significant results. As seen on jsPerf.

    Documentation

    Download

    Installation

    Benchmark.js’ only hard dependency is lodash. Include platform.js to populate Benchmark.platform.

    In a browser:

    <script src="lodash.js"></script>
    <script src="platform.js"></script>
    <script src="benchmark.js"></script>
    

    In an AMD loader:

    require({
      'paths': {
        'benchmark': 'path/to/benchmark',
        'lodash': 'path/to/lodash',
        'platform': 'path/to/platform'
      }
    },
    ['benchmark'], function(Benchmark) {/*…*/});
    

    Using npm:

    $ npm i --save benchmark
    

    In Node.js:

    var Benchmark = require('benchmark');
    

    Optionally, use the microtime module by Wade Simmons:

    npm i --save microtime
    

    Usage example:

    var suite = new Benchmark.Suite;
    
    // add tests
    suite.add('RegExp#test', function() {
      /o/.test('Hello World!');
    })
    .add('String#indexOf', function() {
      'Hello World!'.indexOf('o') > -1;
    })
    // add listeners
    .on('cycle', function(event) {
      console.log(String(event.target));
    })
    .on('complete', function() {
      console.log('Fastest is ' + this.filter('fastest').map('name'));
    })
    // run async
    .run({ 'async': true });
    
    // logs:
    // => RegExp#test x 4,161,532 +-0.99% (59 cycles)
    // => String#indexOf x 6,139,623 +-1.00% (131 cycles)
    // => Fastest is String#indexOf
    

    Support

    Tested in Chrome 54-55, Firefox 49-50, IE 11, Edge 14, Safari 9-10, Node.js 6-7, & PhantomJS 2.1.1.

    BestieJS

    Benchmark.js is part of the BestieJS “Best in Class” module collection. This means we promote solid browser/environment support, ES5+ precedents, unit testing, & plenty of documentation.

    Show All