diff options
Diffstat (limited to 'cli')
-rw-r--r-- | cli/bench/main.rs | 9 | ||||
-rw-r--r-- | cli/tests/workers/large_message_worker.js | 14 | ||||
-rw-r--r-- | cli/tests/workers_large_message_bench.ts | 35 |
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(); |