diff --git a/.jules/bolt.md b/.jules/bolt.md index ee124e69..04c2dc67 100644 --- a/.jules/bolt.md +++ b/.jules/bolt.md @@ -62,3 +62,6 @@ ## 2026-08-11 - Array의 toMutableList 할당 오버헤드 최적화 **학습:** 배열을 정렬하기 위해 `.toMutableList()`를 호출하면 새로운 `ArrayList` 객체와 내부 배열 객체가 할당되어 대규모 디렉토리를 순회할 때 가비지 컬렉션(GC) 부하를 유발합니다. 배열 복제가 필요한 경우 `.clone()`을 사용하면 하나의 배열 객체만 새로 할당되므로 더 효율적입니다. **조치:** 디렉토리 파일 배열을 정렬하기 전에 복사할 때 `.toMutableList()` 대신 `.clone()`을 사용하여 불필요한 중간 컬렉션 할당을 제거하고 성능을 향상시켰습니다. +## 2024-11-20 - Avoid List.any allocations +**Learning:** `List`에 대해 `.any {}`와 같은 인라인 함수를 빈번하게 호출하면 매번 `Iterator` 객체가 할당됩니다. +**Action:** 자주 검사되는 정적 설정 컬렉션에는 `List` 대신 `Array`를 사용하여 인라인 함수 호출 시 불필요한 객체 할당을 방지해야 합니다. diff --git a/src/main/kotlin/html4tree/main.kt b/src/main/kotlin/html4tree/main.kt index 0972fa2c..5ecc46ac 100644 --- a/src/main/kotlin/html4tree/main.kt +++ b/src/main/kotlin/html4tree/main.kt @@ -503,8 +503,10 @@ private object Constants { val defaultSensitiveFileNamesLowercase = defaultSensitiveFiles.map { it.toLowerCase(java.util.Locale.ROOT) }.toSet() + // ⚡ Bolt Performance Optimization: Use arrayOf instead of listOf to avoid Iterator allocation + // Array.any is inline and uses a standard for-loop without allocating an Iterator object per file @JvmField - val defaultSensitiveExtensions = listOf( + val defaultSensitiveExtensions = arrayOf( ".pem", ".key", ".p12",