diff options
author | 2022-08-21 23:53:56 -0700 | |
---|---|---|
committer | 2022-08-22 00:04:27 -0700 | |
commit | b95e6602c335162ec8e93cc9b319f8b5319edc9a (patch) | |
tree | ba233dc319e857dd48ff99d783e61a867f519840 /bench/snippets/emitter.js | |
parent | 68973722588389c494ff3f588ce79ef1eb5dd859 (diff) | |
download | bun-b95e6602c335162ec8e93cc9b319f8b5319edc9a.tar.gz bun-b95e6602c335162ec8e93cc9b319f8b5319edc9a.tar.zst bun-b95e6602c335162ec8e93cc9b319f8b5319edc9a.zip |
Add a snippet for benchmarking EventEmitter vs EventTarget
Diffstat (limited to 'bench/snippets/emitter.js')
-rw-r--r-- | bench/snippets/emitter.js | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/bench/snippets/emitter.js b/bench/snippets/emitter.js new file mode 100644 index 000000000..4b6b8b216 --- /dev/null +++ b/bench/snippets/emitter.js @@ -0,0 +1,49 @@ +const EventEmitter = require("events").EventEmitter; +import { bench, run } from "mitata"; + +const emitter = new EventEmitter(); +const event = new Event("hello"); +emitter.on("hello", (event) => { + event.preventDefault(); +}); + +var id = 0; +bench("EventEmitter.emit", () => { + emitter.emit("hello", { + preventDefault() { + id++; + }, + }); +}); + +bench("EventEmitter.on x 10_000 (handler)", () => { + var cb = () => { + event.preventDefault(); + }; + emitter.on("hey", cb); + for (let i = 0; i < 10_000; i++) + emitter.emit("hey", { + preventDefault() { + id++; + }, + }); + emitter.off("hey", cb); +}); + +var target = new EventTarget(); +target.addEventListener("hello", (event) => {}); +bench("EventTarget.dispatch", () => { + target.dispatchEvent(event); +}); + +var hey = new Event("hey"); + +bench("EventTarget.on x 10_000 (handler)", () => { + var handler = (event) => {}; + target.addEventListener("hey", handler); + + for (let i = 0; i < 10_000; i++) target.dispatchEvent(hey); + target.removeEventListener("hey", handler); +}); + +await run(); |