Benchmark.prototypeBenchmark.prototype.abortedBenchmark.prototype.compiledBenchmark.prototype.countBenchmark.prototype.cyclesBenchmark.prototype.errorBenchmark.prototype.fnBenchmark.prototype.hzBenchmark.prototype.runningBenchmark.prototype.setupBenchmark.prototype.teardownBenchmark.prototype.abortBenchmark.prototype.cloneBenchmark.prototype.compareBenchmark.prototype.emitBenchmark.prototype.listenersBenchmark.prototype.offBenchmark.prototype.onBenchmark.prototype.resetBenchmark.prototype.runBenchmark.prototype.toStringBenchmark.optionsBenchmark.optionsBenchmark.options.asyncBenchmark.options.deferBenchmark.options.delayBenchmark.options.idBenchmark.options.initCountBenchmark.options.maxTimeBenchmark.options.minSamplesBenchmark.options.minTimeBenchmark.options.nameBenchmark.options.onAbortBenchmark.options.onCompleteBenchmark.options.onCycleBenchmark.options.onErrorBenchmark.options.onResetBenchmark.options.onStartBenchmark.platformBenchmark.supportBenchmark.prototype.statsBenchmark.prototype.timesBenchmark.DeferredBenchmark.Deferred.prototypeBenchmark.EventBenchmark.Event.prototypeBenchmark.SuiteBenchmark.Suite.prototypeBenchmark.Suite.prototype.abortedBenchmark.Suite.prototype.lengthBenchmark.Suite.prototype.runningBenchmark.Suite.prototype.abortBenchmark.Suite.prototype.addBenchmark.Suite.prototype.cloneBenchmark.Suite.prototype.emitBenchmark.Suite.prototype.filterBenchmark.Suite.prototype.listenersBenchmark.Suite.prototype.offBenchmark.Suite.prototype.onBenchmark.Suite.prototype.resetBenchmark.Suite.prototype.runBenchmark.Suite.optionsBenchmarkBenchmark(name, fn [, options={}])The Benchmark constructor.
Note: The Benchmark constructor exposes a handful of lodash methods to make working with arrays, collections, and objects easier. The lodash methods are:
each/forEach, forOwn, has, indexOf, map, and reduce
name (string): A name to identify the benchmark.fn (Function|string): The test to benchmark.[options={}] (Object): Options object.// basic usage (the `new` operator is optional)
var bench = new Benchmark(fn);
// or using a name first
var bench = new Benchmark('foo', fn);
// or with options
var bench = new Benchmark('foo', fn, {
// displayed by `Benchmark#toString` if `name` is not available
'id': 'xyz',
// called when the benchmark starts running
'onStart': onStart,
// called after each run cycle
'onCycle': onCycle,
// called when aborted
'onAbort': onAbort,
// called when a test errors
'onError': onError,
// called when reset
'onReset': onReset,
// called when the benchmark completes running
'onComplete': onComplete,
// compiled/called before the test loop
'setup': setup,
// compiled/called after the test loop
'teardown': teardown
});
// or name and options
var bench = new Benchmark('foo', {
// a flag to indicate the benchmark is deferred
'defer': true,
// benchmark test function
'fn': function(deferred) {
// call `Deferred#resolve` when the deferred test is finished
deferred.resolve();
}
});
// or options only
var bench = new Benchmark({
// benchmark name
'name': 'foo',
// benchmark test as a string
'fn': '[1,2,3,4].sort()'
});
// a test’s `this` binding is set to the benchmark instance
var bench = new Benchmark('foo', function() {
'My name is '.concat(this.name); // "My name is foo"
});
Benchmark.filter(array, callback)A generic Array#filter like method.
array (Array): The array to iterate over.callback (Function|string): The function/alias called per iteration.(Array): A new array of values that passed callback filter.
// get odd numbers
Benchmark.filter([1, 2, 3, 4, 5], function(n) {
return n % 2;
}); // -> [1, 3, 5];
// get fastest benchmarks
Benchmark.filter(benches, 'fastest');
// get slowest benchmarks
Benchmark.filter(benches, 'slowest');
// get benchmarks that completed without erroring
Benchmark.filter(benches, 'successful');
Benchmark.formatNumber(number)Converts a number to a more readable comma-separated string representation.
number (number): The number to convert.(string): The more readable string representation.
Benchmark.invoke(benches, name [, args])Invokes a method on all items in an array.
benches (Array): Array of benchmarks to iterate over.name (Object|string): The name of the method to invoke OR options object.[args] (…)*: Arguments to invoke the method with.(Array): A new array of values returned from each method invoked.
// invoke `reset` on all benchmarks
Benchmark.invoke(benches, 'reset');
// invoke `emit` with arguments
Benchmark.invoke(benches, 'emit', 'complete', listener);
// invoke `run(true)`, treat benchmarks as a queue, and register invoke callbacks
Benchmark.invoke(benches, {
// invoke the `run` method
'name': 'run',
// pass a single argument
'args': true,
// treat as queue, removing benchmarks from front of `benches` until empty
'queued': true,
// called before any benchmarks have been invoked.
'onStart': onStart,
// called between invoking benchmarks
'onCycle': onCycle,
// called after all benchmarks have been invoked.
'onComplete': onComplete
});
Benchmark.join(object [, separator1=',', separator2=': '])Creates a string of joined array values or object key-value pairs.
object (Array|Object): The object to operate on.[separator1=','] (string): The separator used between key-value pairs.[separator2=': '] (string): The separator used between keys and values.(string): The joined result.
Benchmark.prototypeBenchmark.prototype.setup(Function, string): Compiled into the test and executed immediately before the test loop.
// basic usage
var bench = Benchmark({
'setup': function() {
var c = this.count,
element = document.getElementById('container');
while (c--) {
element.appendChild(document.createElement('div'));
}
},
'fn': function() {
element.removeChild(element.lastChild);
}
});
// compiles to something like:
var c = this.count,
element = document.getElementById('container');
while (c--) {
element.appendChild(document.createElement('div'));
}
var start = new Date;
while (count--) {
element.removeChild(element.lastChild);
}
var end = new Date - start;
// or using strings
var bench = Benchmark({
'setup': '\
var a = 0;\n\
(function() {\n\
(function() {\n\
(function() {',
'fn': 'a += 1;',
'teardown': '\
}())\n\
}())\n\
}())'
});
// compiles to something like:
var a = 0;
(function() {
(function() {
(function() {
var start = new Date;
while (count--) {
a += 1;
}
var end = new Date - start;
}())
}())
}())
Benchmark.prototype.teardown(Function, string): Compiled into the test and executed immediately after the test loop.
Benchmark.prototype.abort()Aborts the benchmark without recording times.
(Object): The benchmark instance.
Benchmark.prototype.clone(options)Creates a new benchmark using the same test and options.
options (Object): Options object to overwrite cloned options.(Object): The new benchmark instance.
var bizarro = bench.clone({
'name': 'doppelganger'
});
Benchmark.prototype.compare(other)Determines if a benchmark is faster than another.
other (Object): The benchmark to compare.(number): Returns -1 if slower, 1 if faster, and 0 if indeterminate.
Benchmark.Suite.prototype.emit(type [, args])Executes all registered listeners of the specified event type.
type (Object|string): The event type or object.[args] (…)*: Arguments to invoke the listener with.()*: Returns the return value of the last listener executed.
Benchmark.Suite.prototype.listeners(type)Returns an array of event listeners for a given type that can be manipulated to add or remove listeners.
type (string): The event type.(Array): The listeners array.
Benchmark.Suite.prototype.off([type, listener])Unregisters a listener for the specified event type(s), or unregisters all listeners for the specified event type(s), or unregisters all listeners for all event types.
[type] (string): The event type.[listener] (Function): The function to unregister.(Object): The benchmark instance.
// unregister a listener for an event type
bench.off('cycle', listener);
// unregister a listener for multiple event types
bench.off('start cycle', listener);
// unregister all listeners for an event type
bench.off('cycle');
// unregister all listeners for multiple event types
bench.off('start cycle complete');
// unregister all listeners for all event types
bench.off();
Benchmark.Suite.prototype.on(type, listener)Registers a listener for the specified event type(s).
type (string): The event type.listener (Function): The function to register.(Object): The benchmark instance.
// register a listener for an event type
bench.on('cycle', listener);
// register a listener for multiple event types
bench.on('start cycle', listener);
Benchmark.prototype.reset()Reset properties and abort if running.
(Object): The benchmark instance.
Benchmark.optionsBenchmark.options.async(boolean): A flag to indicate that benchmark cycles will execute asynchronously by default.
Benchmark.options.id(string): Displayed by Benchmark#toString when a name is not available (auto-generated if absent).
Benchmark.options.initCount(number): The default number of times to execute a test on a benchmark’s first cycle.
Benchmark.options.maxTime(number): The maximum time a benchmark is allowed to run before finishing (secs).
Note: Cycle delays aren't counted toward the maximum time.
Benchmark.options.minSamples(number): The minimum sample size required to perform statistical analysis.
Benchmark.platformBenchmark.platform(Object): Platform object with properties describing things like browser name, version, and operating system. See platform.js.
Benchmark.supportBenchmark.prototype.statsBenchmark.prototype.stats(Object): An object of stats including mean, margin or error, and standard deviation.
Benchmark.prototype.timesBenchmark.DeferredBenchmark.Deferred.prototypeBenchmark.Deferred.prototype.cycles(number): The number of deferred cycles performed while benchmarking.
Benchmark.EventBenchmark.Event.prototypeBenchmark.Event.prototype.aborted(boolean): A flag to indicate if the emitters listener iteration is aborted.
Benchmark.Event.prototype.cancelled(boolean): A flag to indicate if the default action is cancelled.
Benchmark.Event.prototype.currentTarget(Object): The object whose listeners are currently being processed.
Benchmark.SuiteBenchmark.Suite(name [, options={}])The Suite constructor.
Note: Each Suite instance has a handful of wrapped lodash methods to make working with Suites easier. The wrapped lodash methods are:
each/forEach, indexOf, map, and reduce
name (string): A name to identify the suite.[options={}] (Object): Options object.// basic usage (the `new` operator is optional)
var suite = new Benchmark.Suite;
// or using a name first
var suite = new Benchmark.Suite('foo');
// or with options
var suite = new Benchmark.Suite('foo', {
// called when the suite starts running
'onStart': onStart,
// called between running benchmarks
'onCycle': onCycle,
// called when aborted
'onAbort': onAbort,
// called when a test errors
'onError': onError,
// called when reset
'onReset': onReset,
// called when the suite completes running
'onComplete': onComplete
});
Benchmark.Suite.prototypeBenchmark.Suite.prototype.abort()Aborts all benchmarks in the suite.
(Object): The suite instance.
Benchmark.Suite.prototype.add(name, fn [, options={}])Adds a test to the benchmark suite.
name (string): A name to identify the benchmark.fn (Function|string): The test to benchmark.[options={}] (Object): Options object.(Object): The benchmark instance.
// basic usage
suite.add(fn);
// or using a name first
suite.add('foo', fn);
// or with options
suite.add('foo', fn, {
'onCycle': onCycle,
'onComplete': onComplete
});
// or name and options
suite.add('foo', {
'fn': fn,
'onCycle': onCycle,
'onComplete': onComplete
});
// or options only
suite.add({
'name': 'foo',
'fn': fn,
'onCycle': onCycle,
'onComplete': onComplete
});
Benchmark.Suite.prototype.clone(options)Creates a new suite with cloned benchmarks.
options (Object): Options object to overwrite cloned options.(Object): The new suite instance.
Benchmark.Suite.prototype.emit(type [, args])Executes all registered listeners of the specified event type.
type (Object|string): The event type or object.[args] (…)*: Arguments to invoke the listener with.()*: Returns the return value of the last listener executed.
Benchmark.Suite.prototype.filter(callback)An Array#filter like method.
callback (Function|string): The function/alias called per iteration.(Object): A new suite of benchmarks that passed callback filter.
Benchmark.Suite.prototype.listeners(type)Returns an array of event listeners for a given type that can be manipulated to add or remove listeners.
type (string): The event type.(Array): The listeners array.
Benchmark.Suite.prototype.off([type, listener])Unregisters a listener for the specified event type(s), or unregisters all listeners for the specified event type(s), or unregisters all listeners for all event types.
[type] (string): The event type.[listener] (Function): The function to unregister.(Object): The benchmark instance.
// unregister a listener for an event type
bench.off('cycle', listener);
// unregister a listener for multiple event types
bench.off('start cycle', listener);
// unregister all listeners for an event type
bench.off('cycle');
// unregister all listeners for multiple event types
bench.off('start cycle complete');
// unregister all listeners for all event types
bench.off();
Benchmark.Suite.prototype.on(type, listener)Registers a listener for the specified event type(s).
type (string): The event type.listener (Function): The function to register.(Object): The benchmark instance.
// register a listener for an event type
bench.on('cycle', listener);
// register a listener for multiple event types
bench.on('start cycle', listener);