@jonahsnider/benchmark
Version:
A Node.js benchmarking library with support for multithreading and TurboFan optimization isolation.
44 lines • 1.28 kB
JavaScript
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