Check out the documentation for complete integration instructions.
First, install the plugin @codspeed/benchmark.js-plugin
and benchmark.js
(if not already installed):
npm install --save-dev @codspeed/benchmark.js-plugin benchmark.js
or with yarn
:
yarn add --dev @codspeed/benchmark.js-plugin benchmark.js
or with pnpm
:
pnpm add --save-dev @codspeed/benchmark.js-plugin benchmark.js
Let's create a fibonacci function and benchmark it with benchmark.js and the CodSpeed plugin:
import Benchmark from "benchmark";
import { withCodSpeed } from "@codspeed/benchmark.js-plugin";
function fibonacci(n) {
if (n < 2) {
return n;
}
return fibonacci(n - 1) + fibonacci(n - 2);
}
const suite = withCodSpeed(new Benchmark.Suite());
suite
.add("fibonacci10", () => {
fibonacci(10);
})
.add("fibonacci15", () => {
fibonacci(15);
})
.on("cycle", function (event: Benchmark.Event) {
console.log(String(event.target));
})
.run();
Here, a few things are happening:
- We create a simple recursive fibonacci function.
- We create a new
Benchmark.Suite
instance with CodSpeed support by using thewithCodSpeed
helper. This step is critical to enable CodSpeed on your benchmarks. - We add two benchmarks to the suite and launch it, benching our
fibonacci
function with 10 and 15.
Now, we can run our benchmarks locally to make sure everything is working as expected:
$ node benches/bench.mjs
[CodSpeed] 2 benches detected but no instrumentation found
[CodSpeed] falling back to benchmark.js
fibonacci10 x 2,155,187 ops/sec ±0.50% (96 runs sampled)
fibonacci15 x 194,742 ops/sec ±0.48% (95 runs sampled)
And... Congrats🎉, CodSpeed is installed in your benchmarking suite! Locally, CodSpeed will fallback to tinybench since the instrumentation is only available in the CI environment for now.
You can now run those benchmarks in your CI to continuously get consistent performance measurements.