diff --git a/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-benchmark-itest.js b/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-benchmark-itest.js index dea8de92266b8a..cbaea78d22883f 100644 --- a/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-benchmark-itest.js +++ b/packages/react-native/src/private/webapis/dom/events/__tests__/EventTarget-benchmark-itest.js @@ -18,9 +18,12 @@ import {unstable_benchmark} from '@react-native/fantom'; let event: Event; let eventTarget: EventTarget; +let eventTargets: $ReadOnlyArray; unstable_benchmark - .suite('EventTarget') + .suite('EventTarget', { + minIterations: 1000, + }) .add( 'dispatchEvent, no bubbling, no listeners', () => { @@ -107,4 +110,69 @@ unstable_benchmark } }, }, + ) + .add( + 'addEventListener, one listener', + () => { + eventTarget.addEventListener('custom', () => {}); + }, + { + beforeEach: () => { + eventTarget = new EventTarget(); + }, + }, + ) + .add( + 'addEventListener, one target, one type, multiple listeners', + () => { + for (let i = 0; i < 100; i++) { + eventTarget.addEventListener('custom', () => {}); + } + }, + { + beforeEach: () => { + eventTarget = new EventTarget(); + }, + }, + ) + .add( + 'addEventListener, one target, multiple types, one listener per type', + () => { + for (let i = 0; i < 100; i++) { + eventTarget.addEventListener(String(i), () => {}); + } + }, + { + beforeEach: () => { + eventTarget = new EventTarget(); + }, + }, + ) + .add( + 'addEventListener, one target, multiple types, multiple listeners', + () => { + for (let i = 0; i < 100; i++) { + for (let j = 0; j < 100; j++) { + eventTarget.addEventListener(String(i), () => {}); + } + } + }, + { + beforeEach: () => { + eventTarget = new EventTarget(); + }, + }, + ) + .add( + 'addEventListener, multiple targets, one type, one listener', + () => { + for (const target of eventTargets) { + target.addEventListener('custom', () => {}); + } + }, + { + beforeEach: () => { + eventTargets = createEventTargetHierarchyWithDepth(100); + }, + }, );