current commit
261007.19 · lib: default node:bench warmup to 10 invocations
// Flags: --experimental-bench --no-warnings
'use strict';

const common = require('../common');
const { completeSample } = require('../common/bench');
const assert = require('assert');
const { createRunner } = require('node:bench');

// Benchmarks that do not set `warmup` run ten unreported invocations before
// the measured samples.
(async () => {
  const runner = createRunner({ yieldBetweenSamples: false });
  const phases = [];

  const completion = runner.bench('default warmup', {
    samples: 2,
  }, common.mustCall((b) => {
    phases.push(b.phase);
    completeSample(b);
  }, 12));

  const records = await runner.run().toArray();
  const result = await completion;

  const plan = records.find(({ type }) => type === 'bench:plan').data;
  assert.strictEqual(plan.warmup, 10);
  assert.deepStrictEqual(phases, [
    ...Array(10).fill('warmup'),
    'measurement',
    'measurement',
  ]);
  assert.strictEqual(result.samples.length, 2);
  assert.strictEqual(
    records.filter(({ type }) => type === 'bench:sample').length, 2);
})().then(common.mustCall());