Public
Edited
Nov 22, 2023
Insert cell
Insert cell
Insert cell
function benchmark1( b ) {
var sum;
var x;
var i;

x = [];
for ( i = 0; i < 10; i++ ) {
x.push( i );
}
sum = 0;
b.tic();
for ( i = 0; i < b.iterations; i++ ) {
for ( const v of x ) {
sum += v;
}
if ( sum !== sum ) {
b.fail( 'should not be NaN' );
}
}
b.toc();
if ( sum !== sum ) {
b.fail( 'should not be NaN' );
}
b.pass( 'benchmark finished' );
b.end();
}
Insert cell
function benchmark2( b ) {
var sum;
var x;
var i;
var j;

x = [];
for ( i = 0; i < 10; i++ ) {
x.push( i );
}
sum = 0;
b.tic();
for ( i = 0; i < b.iterations; i++ ) {
for ( j = 0; j < x.length; j++ ) {
sum += x[ j ];
}
if ( sum !== sum ) {
b.fail( 'should not be NaN' );
}
}
b.toc();
if ( sum !== sum ) {
b.fail( 'should not be NaN' );
}
b.pass( 'benchmark finished' );
b.end();
}
Insert cell
Insert cell
b1_results = bench( 'for...of', benchmark1 )
Insert cell
b2_results = bench( 'for loop', benchmark2 )
Insert cell
Insert cell
harness = require( 'https://cdn.jsdelivr.net/gh/stdlib-js/bench-harness@umd/browser.js' )
Insert cell
function bench( /* description, [options,] clbk */ ) {
var args;
var i;
// Copy input arguments to an array:
args = [];
for ( i = 0; i < arguments.length; i++ ) {
args.push( arguments[ i ] );
}
return new Promise( executor );
function executor( resolve, reject ) {
var results;
var stream;
var h;
results = '';
// Create a new benchmark harness:
h = harness.createHarness( onFinish );
// Create a stream for benchmark results:
stream = h.createStream();
// Listen for 'data' events (i.e., benchmark results):
stream.on( 'data', onResults );
// Run the provided benchmark:
h.apply( h, args );
function onResults( data ) {
results += data.toString();
}
function onFinish() {
// Once a benchmark finishes, close the harness:
h.close();
// Return the benchmark results:
resolve( results );
}
}
}
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more