summaryrefslogtreecommitdiff
path: root/cli/tests/workers/bench_startup.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/workers/bench_startup.ts')
-rw-r--r--cli/tests/workers/bench_startup.ts33
1 files changed, 33 insertions, 0 deletions
diff --git a/cli/tests/workers/bench_startup.ts b/cli/tests/workers/bench_startup.ts
new file mode 100644
index 000000000..5fbf23b45
--- /dev/null
+++ b/cli/tests/workers/bench_startup.ts
@@ -0,0 +1,33 @@
+// Benchmark measures time it takes to start and stop a number of workers.
+const workerCount = 50;
+
+async function bench(): Promise<void> {
+ const workers: Worker[] = [];
+ for (let i = 1; i <= workerCount; ++i) {
+ const worker = new Worker(
+ new URL("bench_worker.ts", import.meta.url).href,
+ { type: "module" },
+ );
+ const promise = new Promise<void>((resolve): void => {
+ worker.onmessage = (e): void => {
+ if (e.data.cmdId === 0) resolve();
+ };
+ });
+ worker.postMessage({ cmdId: 0, action: 2 });
+ await promise;
+ workers.push(worker);
+ }
+ console.log("Done creating workers closing workers!");
+ for (const worker of workers) {
+ const promise = new Promise<void>((resolve): void => {
+ worker.onmessage = (e): void => {
+ if (e.data.cmdId === 3) resolve();
+ };
+ });
+ worker.postMessage({ action: 3 });
+ await promise;
+ }
+ console.log("Finished!");
+}
+
+bench();