From 90e445c1b8edb8b015a473bf4c083d0af6935526 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Thu, 30 Mar 2023 20:29:09 -0500 Subject: [PATCH] [Perf] Use `Set` instead of `Array` for Callback Manager --- src/util/callbacks.ts | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/src/util/callbacks.ts b/src/util/callbacks.ts index b242dc6d2..f7b226bdd 100644 --- a/src/util/callbacks.ts +++ b/src/util/callbacks.ts @@ -1,8 +1,8 @@ export function createCallbackManager() { - const callbacks: AnyToVoidFunction[] = []; + const callbacks = new Set(); function addCallback(cb: AnyToVoidFunction) { - callbacks.push(cb); + callbacks.add(cb); return () => { removeCallback(cb); @@ -10,10 +10,7 @@ export function createCallbackManager() { } function removeCallback(cb: AnyToVoidFunction) { - const index = callbacks.indexOf(cb); - if (index !== -1) { - callbacks.splice(index, 1); - } + callbacks.delete(cb); } function runCallbacks(...args: any[]) { @@ -23,7 +20,7 @@ export function createCallbackManager() { } function hasCallbacks() { - return Boolean(callbacks.length); + return Boolean(callbacks.size); } return {