From c59eefe6c1dae1cb889d889242ea57d60da0abc4 Mon Sep 17 00:00:00 2001 From: limina1 Date: Tue, 17 Dec 2024 02:27:07 -0500 Subject: [PATCH] Modify event lookup --- src/lib/components/EventNetwork.svelte | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/lib/components/EventNetwork.svelte b/src/lib/components/EventNetwork.svelte index 9bf88c0..4538660 100644 --- a/src/lib/components/EventNetwork.svelte +++ b/src/lib/components/EventNetwork.svelte @@ -66,6 +66,7 @@ const lightness = 75; return `hsl(${hue}, ${saturation}%, ${lightness}%)`; } + function generateGraph(events: NDKEvent[]): { nodes: NetworkNode[]; links: NetworkLink[]; @@ -74,6 +75,12 @@ const links: NetworkLink[] = []; const nodeMap = new Map(); + // Create event lookup map - O(n) operation done once + const eventMap = new Map(); + events.forEach((event) => { + if (event.id) eventMap.set(event.id, event); + }); + const indexEvents = events.filter((e) => e.kind === 30040); indexEvents.forEach((index) => { @@ -87,7 +94,8 @@ contentRefs.forEach((tag, idx) => { if (!tag[1]) return; - const targetEvent = events.find((e) => e.id === tag[1]); + // O(1) lookup instead of O(n) search + const targetEvent = eventMap.get(tag[1]); if (!targetEvent) return; const targetNode = getNode(tag[1], nodeMap, targetEvent, idx); @@ -110,6 +118,7 @@ return { nodes, links }; } + function drawNetwork() { if (!svg || !events?.length) return;