diff --git a/benchmark/test_runner/mock-fn.js b/benchmark/test_runner/mock-fn.js new file mode 100644 index 00000000000000..6489ccf815e294 --- /dev/null +++ b/benchmark/test_runner/mock-fn.js @@ -0,0 +1,48 @@ +'use strict'; + +const common = require('../common'); +const assert = require('node:assert'); +const { test } = require('node:test'); + +const bench = common.createBenchmark(main, { + n: [1e6], + mode: ['define', 'execute'], +}, { + // We don't want to test the reporter here + flags: ['--test-reporter=./benchmark/fixtures/empty-test-reporter.js'], +}); + +const noop = () => {}; + +function benchmarkDefine(n) { + let noDead; + test((t) => { + bench.start(); + for (let i = 0; i < n; i++) { + noDead = t.mock.fn(noop); + } + bench.end(n); + assert.ok(noDead); + }); +} + +function benchmarkExecute(n) { + let noDead; + test((t) => { + const mocked = t.mock.fn(noop); + bench.start(); + for (let i = 0; i < n; i++) { + noDead = mocked(); + } + bench.end(n); + assert.strictEqual(noDead, noop()); + }); +} + +function main({ n, mode }) { + if (mode === 'define') { + benchmarkDefine(n); + } else if (mode === 'execute') { + benchmarkExecute(n); + } +}