Skip to content
A benchmarking library. As used on jsPerf.com.
JavaScript HTML CSS Shell
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
doc
example/jsperf
plugin
test
vendor
.gitattributes
.gitignore
.npmignore
.travis.yml
LICENSE.txt
README.md
benchmark.js
index.js
nano.jar
nano.java
package.json

README.md

Benchmark.js v1.0.0

build status

A robust benchmarking library that works on nearly all JavaScript platforms1, supports high-resolution timers, and returns statistically significant results. As seen on jsPerf.

Download

Dive in

We’ve got API docs and unit tests.

For a list of upcoming features, check out our roadmap.

Support

Benchmark.js has been tested in at least Adobe AIR 3.1, Chrome 5-21, Firefox 1-15, IE 6-9, Opera 9.25-12, Safari 3-6, Node.js 0.8.8, Narwhal 0.3.2, RingoJS 0.8, and Rhino 1.7RC5.

Installation and usage

In a browser or Adobe AIR:

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

Optionally, expose Java’s nanosecond timer by adding the nano applet to the <body>:

<applet code="nano" archive="nano.jar"></applet>

Or enable Chrome’s microsecond timer by using the command line switch:

--enable-benchmarking

Via npm:

npm install benchmark

In Node.js and RingoJS v0.8.0+:

var Benchmark = require('benchmark');

Optionally, use the microtime module by Wade Simmons:

npm install microtime

In RingoJS v0.7.0-:

var Benchmark = require('benchmark').Benchmark;

In Rhino:

load('benchmark.js');

In an AMD loader like RequireJS:

require({
  'paths': {
    'benchmark': 'path/to/benchmark'
  }
},
['benchmark'], function(Benchmark) {
  console.log(Benchmark.version);
});

// or with platform.js
// https://github.com/bestiejs/platform.js
require({
  'paths': {
    'benchmark': 'path/to/benchmark',
    'platform': 'path/to/platform'
  }
},
['benchmark', 'platform'], function(Benchmark, platform) {
  Benchmark.platform = platform;
  console.log(Benchmark.platform.name);
});

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').pluck('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

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, and plenty of documentation.

Authors

Contributors

Something went wrong with that request. Please try again.