summaryrefslogtreecommitdiff
path: root/cli
diff options
context:
space:
mode:
Diffstat (limited to 'cli')
-rw-r--r--cli/bench/main.rs9
-rw-r--r--cli/tests/workers/large_message_worker.js14
-rw-r--r--cli/tests/workers_large_message_bench.ts35
3 files changed, 58 insertions, 0 deletions
diff --git a/cli/bench/main.rs b/cli/bench/main.rs
index b69bbc7ac..c6f786e31 100644
--- a/cli/bench/main.rs
+++ b/cli/bench/main.rs
@@ -68,6 +68,15 @@ const EXEC_TIME_BENCHMARKS: &[(&str, &[&str], Option<i32>)] = &[
None,
),
(
+ "workers_large_message",
+ &[
+ "run",
+ "--allow-read",
+ "cli/tests/workers_large_message_bench.ts",
+ ],
+ None,
+ ),
+ (
"text_decoder",
&["run", "cli/tests/text_decoder_perf.js"],
None,
diff --git a/cli/tests/workers/large_message_worker.js b/cli/tests/workers/large_message_worker.js
new file mode 100644
index 000000000..f7b7da8a0
--- /dev/null
+++ b/cli/tests/workers/large_message_worker.js
@@ -0,0 +1,14 @@
+// Copyright 2020 the Deno authors. All rights reserved. MIT license.
+
+const dataSmall = "";
+const dataLarge = "x".repeat(10 * 1024);
+
+onmessage = function (e) {
+ for (let i = 0; i <= 10; i++) {
+ if (i % 2 == 0) {
+ postMessage(dataLarge);
+ } else {
+ postMessage(dataSmall);
+ }
+ }
+};
diff --git a/cli/tests/workers_large_message_bench.ts b/cli/tests/workers_large_message_bench.ts
new file mode 100644
index 000000000..9cda5a40d
--- /dev/null
+++ b/cli/tests/workers_large_message_bench.ts
@@ -0,0 +1,35 @@
+// Copyright 2020 the Deno authors. All rights reserved. MIT license.
+
+// deno-lint-ignore-file
+
+import { deferred } from "../../test_util/std/async/deferred.ts";
+
+function oneWorker(i: any): Promise<void> {
+ return new Promise<void>((resolve) => {
+ let countDown = 10;
+ const worker = new Worker(
+ new URL("workers/large_message_worker.js", import.meta.url).href,
+ { type: "module" },
+ );
+ worker.onmessage = (e): void => {
+ if (countDown > 0) {
+ countDown--;
+ return;
+ }
+ worker.terminate();
+ resolve();
+ };
+ worker.postMessage("hi " + i);
+ });
+}
+
+function bench(): Promise<any> {
+ let promises = [];
+ for (let i = 0; i < 50; i++) {
+ promises.push(oneWorker(i));
+ }
+
+ return Promise.all(promises);
+}
+
+bench();