Published
Edited
Apr 27, 2021
2 stars
Insert cell
Insert cell
function benchmarkCallback(b) {
function callback(f) {
for (let i = 0; i < N; i++) {
f(i);
}
}

b.tic(); // start timing

for (let i = 0; i < b.iterations; i++) {
let sum = 0;
callback((i) => (sum += i));
}

b.toc(); // end timing

b.end(); // finish the benchmark
}
Insert cell
function benchmarkIterator(b) {
class Iter {
[Symbol.iterator]() {
let i = 0;
return {
next: () => {
if (i > N) {
return { done: true };
}
return { done: false, value: i++ };
}
};
}
}

b.tic(); // start timing

for (let i = 0; i < b.iterations; i++) {
let sum = 0;
const iter = new Iter();
for (const i of iter) {
sum += i;
}
}

b.toc(); // end timing

b.end(); // finish the benchmark
}
Insert cell
function benchmarkGenerator(b) {
function* iterator() {
for (let i = 0; i < N; i++) {
yield i;
}
}

b.tic(); // start timing

for (let i = 0; i < b.iterations; i++) {
let sum = 0;

for (const i of iterator()) {
sum += i;
}
}

b.toc(); // end timing

b.end(); // finish the benchmark
}
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
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