From 695f8e230e3c51578e205edb5b4be5bec3802c69 Mon Sep 17 00:00:00 2001 From: Abdul Malik Ikhsan Date: Sun, 4 Oct 2026 16:05:00 +0700 Subject: [PATCH] Reduce temporary memory usage when grouping analysis cache nodes --- src/Cache/AnalysisResultCache.php | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Cache/AnalysisResultCache.php b/src/Cache/AnalysisResultCache.php index f3a0ba50..1776884e 100644 --- a/src/Cache/AnalysisResultCache.php +++ b/src/Cache/AnalysisResultCache.php @@ -342,31 +342,32 @@ private function classNodesFromPayload(array $payload, string $file): ?array */ public function storeExtractionResult(array $files, string $namespace, ExtractionResult $extractionResult): void { - $classNodesByFile = array_fill_keys($files, []); - $anonymousClassNodesByFile = $classNodesByFile; - $functionNodesByFile = $classNodesByFile; - $anonymousFunctionNodesByFile = $classNodesByFile; + $fileSet = array_fill_keys($files, true); + $classNodesByFile = []; + $anonymousClassNodesByFile = []; + $functionNodesByFile = []; + $anonymousFunctionNodesByFile = []; foreach ($extractionResult->classNodes as $classNode) { - if (isset($classNodesByFile[$classNode->file])) { + if (isset($fileSet[$classNode->file])) { $classNodesByFile[$classNode->file][] = $classNode; } } foreach ($extractionResult->anonymousClassNodes as $anonymousClassNode) { - if (isset($anonymousClassNodesByFile[$anonymousClassNode->file])) { + if (isset($fileSet[$anonymousClassNode->file])) { $anonymousClassNodesByFile[$anonymousClassNode->file][] = $anonymousClassNode; } } foreach ($extractionResult->functionNodes as $functionNode) { - if (isset($functionNodesByFile[$functionNode->file])) { + if (isset($fileSet[$functionNode->file])) { $functionNodesByFile[$functionNode->file][] = $functionNode; } } foreach ($extractionResult->anonymousFunctionNodes as $anonymousFunctionNode) { - if (isset($anonymousFunctionNodesByFile[$anonymousFunctionNode->file])) { + if (isset($fileSet[$anonymousFunctionNode->file])) { $anonymousFunctionNodesByFile[$anonymousFunctionNode->file][] = $anonymousFunctionNode; } } @@ -375,13 +376,13 @@ public function storeExtractionResult(array $files, string $namespace, Extractio $this->storeAnalysisNodes( $file, $namespace, - $classNodesByFile[$file], + $classNodesByFile[$file] ?? [], $extractionResult->fileAnalyses[$file] ?? null, - $anonymousClassNodesByFile[$file], + $anonymousClassNodesByFile[$file] ?? [], $extractionResult->fileReferences[$file] ?? [], $extractionResult->fileInstantiations[$file] ?? [], - $functionNodesByFile[$file], - $anonymousFunctionNodesByFile[$file], + $functionNodesByFile[$file] ?? [], + $anonymousFunctionNodesByFile[$file] ?? [], ); } }