From 980466b2a6fbf6b1eb26fc75b7f4c6d64953001f Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sun, 6 Sep 2026 16:10:04 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=ED=94=84=EB=A0=88=EC=9E=84=20=EC=97=B4=20=EC=9D=B4=EB=A6=84=20?= =?UTF-8?q?=EC=B6=94=EC=B6=9C=20=EC=8B=9C=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20O(N)=20=EC=84=9C=EB=B8=8C=EC=85=8B=ED=8C=85=20?= =?UTF-8?q?=EC=98=A4=EB=B2=84=ED=97=A4=EB=93=9C=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `colnames(newformXDataK[colnames(newFormModel@Data$data)])` 와 같이 이미 알고 있는 열 이름으로 데이터프레임을 서브셋팅하여 다시 열 이름을 구하는 로직을 제거했습니다. R에서 데이터프레임을 서브셋팅하는 것은 O(N) 메모리 할당 및 복사 오버헤드를 발생시킵니다. 이를 `colnames(newFormModel@Data$data)`를 직접 사용하도록 수정하여 실행 속도를 향상시키고 불필요한 메모리 사용을 방지했습니다. 해당 최적화에 대한 내용은 `.jules/bolt.md` 저널에 기록되었습니다. --- R/aFIPC.R | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/R/aFIPC.R b/R/aFIPC.R index 62546519..8c949aad 100644 --- a/R/aFIPC.R +++ b/R/aFIPC.R @@ -620,8 +620,9 @@ autoFIPC <- IPDItemCount <- 0 # IPD target item checking - newFormColNames <- colnames(newformXDataK[colnames(newFormModel@Data$data)]) - oldFormColNames <- colnames(oldformYDataK[colnames(oldFormModel@Data$data)]) + # ⚡ Bolt: Removed O(N) subsetting overhead by directly using colnames(newFormModel@Data$data) + newFormColNames <- colnames(newFormModel@Data$data) + oldFormColNames <- colnames(oldFormModel@Data$data) # ⚡ Bolt: Vectorized match() to avoid dynamic array growth overhead inside a for loop idxNew <- match(newformCommonItemNames, newFormColNames) @@ -749,8 +750,9 @@ autoFIPC <- } } - newFormColNames <- colnames(newformXDataK[colnames(newFormModel@Data$data)]) - oldFormColNames <- colnames(oldformYDataK[colnames(oldFormModel@Data$data)]) + # ⚡ Bolt: Removed O(N) subsetting overhead by directly using colnames(newFormModel@Data$data) + newFormColNames <- colnames(newFormModel@Data$data) + oldFormColNames <- colnames(oldFormModel@Data$data) # ⚡ Bolt: Cache parameter indices to avoid O(N) linear search inside loop newScaleParmsItemIdxCache <- split(seq_len(nrow(NewScaleParms)), NewScaleParms$item)