UNPKG

@jonahsnider/benchmark

Version:

A Node.js benchmarking library with support for multithreading and TurboFan optimization isolation.

44 lines 1.28 kB
import { isMainThread, parentPort, workerData } from 'node:worker_threads'; import assert from 'node:assert/strict'; import { ThreadWorker } from './types/index.js'; import { compatibleImport } from './utils.js'; assert.ok(!isMainThread, new Error('This file should be run in a thread')); assert.ok(parentPort); const { suitePath } = workerData; let suite; let ac; async function run() { ac = new AbortController(); suite ??= await compatibleImport(suitePath); try { const results = await suite.run(ac.signal); const response = { kind: ThreadWorker.Response.Kind.Results, results, }; parentPort.postMessage(response); } catch (error) { const response = { kind: ThreadWorker.Response.Kind.Error, error, }; parentPort.postMessage(response); } } parentPort.on('message', async (message) => { switch (message.kind) { case ThreadWorker.Message.Kind.Run: { await run(); break; } case ThreadWorker.Message.Kind.Abort: { ac.abort(); break; } default: { throw new RangeError(`Unknown message kind`); } } }); //# sourceMappingURL=thread-worker.js.map