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, andreduce
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 genericArray#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 immediatelybefore 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 immediatelyafter 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, and0 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 byBenchmark#toString when aname 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. Seeplatform.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.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, andreduce
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)AnArray#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);