diff options
author | 2023-04-18 17:59:51 -0400 | |
---|---|---|
committer | 2023-04-18 14:59:51 -0700 | |
commit | 96a2ed1040d5a0ca51ae41267cba4f8e5d0a6142 (patch) | |
tree | 5af89ada3aff9044bcdca75dbf0101bc4515f964 /bench/snippets | |
parent | 76deb51c294126406c8f0be5f13bb184c1ddb454 (diff) | |
download | bun-96a2ed1040d5a0ca51ae41267cba4f8e5d0a6142.tar.gz bun-96a2ed1040d5a0ca51ae41267cba4f8e5d0a6142.tar.zst bun-96a2ed1040d5a0ca51ae41267cba4f8e5d0a6142.zip |
implement `node:events` in javascript (#2604)
* initial event emitter reimplementation
* implement most of node:events. tests passing
* work on emitter
* fix importing node:events
* work on event emitter tests
* event work
* event work
* event stuff and experimenting with a lazy createHash
* cleanup crypto stuff i had on this branch
* finish event stuff up
* fix error monitor
* validate listeners are functions
* changes requested
Diffstat (limited to 'bench/snippets')
-rwxr-xr-x | bench/snippets/bun.lockb | bin | 1477 -> 0 bytes | |||
-rw-r--r-- | bench/snippets/emitter.mjs | 101 | ||||
-rw-r--r-- | bench/snippets/package.json | 7 |
3 files changed, 0 insertions, 108 deletions
diff --git a/bench/snippets/bun.lockb b/bench/snippets/bun.lockb Binary files differdeleted file mode 100755 index 3acb6d075..000000000 --- a/bench/snippets/bun.lockb +++ /dev/null diff --git a/bench/snippets/emitter.mjs b/bench/snippets/emitter.mjs deleted file mode 100644 index f708cf77a..000000000 --- a/bench/snippets/emitter.mjs +++ /dev/null @@ -1,101 +0,0 @@ -// **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 deleted file mode 100644 index 6244001a8..000000000 --- a/bench/snippets/package.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "dependencies": { - "eventemitter3": "^5.0.0", - "tiny-typed-emitter": "latest" - }, - "prettier": "../../.prettierrc.cjs" -} |