| 19 | * @param {import('tinybench').Bench} bench |
| 20 | */ |
| 21 | export default function register(bench) { |
| 22 | const warm = new HookMap(() => new SyncHook(["x"])); |
| 23 | for (let i = 0; i < 20; i++) { |
| 24 | warm.for(`key-${i}`).tap(`plugin-${i}`, () => {}); |
| 25 | } |
| 26 | |
| 27 | bench.add("hook-map: for(existing key)", () => { |
| 28 | for (let i = 0; i < LOOKUP_ITERATIONS; i++) { |
| 29 | warm.for("key-10"); |
| 30 | } |
| 31 | }); |
| 32 | |
| 33 | bench.add("hook-map: get(existing key)", () => { |
| 34 | for (let i = 0; i < LOOKUP_ITERATIONS; i++) { |
| 35 | warm.get("key-10"); |
| 36 | } |
| 37 | }); |
| 38 | |
| 39 | bench.add("hook-map: get(missing key)", () => { |
| 40 | for (let i = 0; i < LOOKUP_ITERATIONS; i++) { |
| 41 | warm.get("not-there"); |
| 42 | } |
| 43 | }); |
| 44 | |
| 45 | bench.add(`hook-map: for(new key) x ${COLD_KEYS}, no interceptors`, () => { |
| 46 | const map = new HookMap(() => new SyncHook(["x"])); |
| 47 | for (let i = 0; i < COLD_KEYS; i++) { |
| 48 | map.for(`k-${i}`); |
| 49 | } |
| 50 | }); |
| 51 | |
| 52 | bench.add(`hook-map: for(new key) x ${COLD_KEYS}, 1 interceptor`, () => { |
| 53 | const map = new HookMap(() => new SyncHook(["x"])); |
| 54 | map.intercept({ factory: (_k, hook) => hook }); |
| 55 | for (let i = 0; i < COLD_KEYS; i++) { |
| 56 | map.for(`k-${i}`); |
| 57 | } |
| 58 | }); |
| 59 | |
| 60 | bench.add(`hook-map: for(new key) x ${COLD_KEYS}, 3 interceptors`, () => { |
| 61 | const map = new HookMap(() => new SyncHook(["x"])); |
| 62 | map.intercept({ factory: (_k, hook) => hook }); |
| 63 | map.intercept({ factory: (_k, hook) => hook }); |
| 64 | map.intercept({ factory: (_k, hook) => hook }); |
| 65 | for (let i = 0; i < COLD_KEYS; i++) { |
| 66 | map.for(`k-${i}`); |
| 67 | } |
| 68 | }); |
| 69 | } |