aboutsummaryrefslogtreecommitdiff
path: root/bench/snippets
diff options
context:
space:
mode:
Diffstat (limited to 'bench/snippets')
-rwxr-xr-xbench/snippets/bun.lockbbin0 -> 1477 bytes
-rw-r--r--bench/snippets/emitter.mjs101
-rw-r--r--bench/snippets/package.json7
3 files changed, 108 insertions, 0 deletions
diff --git a/bench/snippets/bun.lockb b/bench/snippets/bun.lockb
new file mode 100755
index 000000000..3acb6d075
--- /dev/null
+++ b/bench/snippets/bun.lockb
Binary files differ
diff --git a/bench/snippets/emitter.mjs b/bench/snippets/emitter.mjs
new file mode 100644
index 000000000..f708cf77a
--- /dev/null
+++ b/bench/snippets/emitter.mjs
@@ -0,0 +1,101 @@
+// **so this file can run in node**
+import { createRequire } from "node:module";
+const require = createRequire(import.meta.url);
+// --
+
+const EventEmitterNative = require("node:events").EventEmitter;
+const TypedEmitter = require("tiny-typed-emitter").TypedEmitter;
+const EventEmitter3 = require("eventemitter3").EventEmitter;
+import { bench, run } from "../../node_modules/mitata/src/cli.mjs";
+const event = new Event("hello");
+var id = 0;
+for (let [EventEmitter, className] of [
+ [EventEmitterNative, "EventEmitter"],
+ [TypedEmitter, "TypedEmitter"],
+ [EventEmitter3, "EventEmitter3"],
+]) {
+ const emitter = new EventEmitter();
+
+ emitter.on("hello", event => {
+ event.preventDefault();
+ });
+
+ bench(`${className}.emit`, () => {
+ emitter.emit("hello", {
+ preventDefault() {
+ id++;
+ },
+ });
+ });
+
+ bench(`${className}.on x 10_000 (handler)`, () => {
+ var cb = event => {
+ event.preventDefault();
+ };
+ emitter.on("hey", cb);
+ var called = false;
+ for (let i = 0; i < 10_000; i++)
+ emitter.emit("hey", {
+ preventDefault() {
+ id++;
+ called = true;
+ },
+ });
+ emitter.off("hey", cb);
+
+ if (!called) throw new Error("not called");
+ });
+
+ if (EventEmitter !== EventEmitter3) {
+ var monkey = Object.assign({}, EventEmitter.prototype);
+ monkey.on("hello", event => {
+ event.preventDefault();
+ });
+
+ bench(`[monkey] ${className}.emit`, () => {
+ var called = false;
+ monkey.emit("hello", {
+ preventDefault() {
+ id++;
+ called = true;
+ },
+ });
+
+ if (!called) {
+ throw new Error("monkey failed");
+ }
+ });
+
+ bench(`[monkey] ${className}.on x 10_000 (handler)`, () => {
+ var cb = () => {
+ event.preventDefault();
+ };
+ monkey.on("hey", cb);
+ for (let i = 0; i < 10_000; i++)
+ monkey.emit("hey", {
+ preventDefault() {
+ id++;
+ },
+ });
+ monkey.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();
diff --git a/bench/snippets/package.json b/bench/snippets/package.json
new file mode 100644
index 000000000..6244001a8
--- /dev/null
+++ b/bench/snippets/package.json
@@ -0,0 +1,7 @@
+{
+ "dependencies": {
+ "eventemitter3": "^5.0.0",
+ "tiny-typed-emitter": "latest"
+ },
+ "prettier": "../../.prettierrc.cjs"
+}