summaryrefslogtreecommitdiff
path: root/cli/tests/workers_startup_bench.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/workers_startup_bench.ts')
-rw-r--r--cli/tests/workers_startup_bench.ts27
1 files changed, 27 insertions, 0 deletions
diff --git a/cli/tests/workers_startup_bench.ts b/cli/tests/workers_startup_bench.ts
new file mode 100644
index 000000000..fbea4dc40
--- /dev/null
+++ b/cli/tests/workers_startup_bench.ts
@@ -0,0 +1,27 @@
+// 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("./subdir/bench_worker.ts");
+ const promise = new Promise(
+ (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) {
+ worker.postMessage({ action: 3 });
+ await worker.closed; // Required to avoid a cmdId not in table error.
+ }
+ console.log("Finished!");
+}
+
+bench();