perf(ignore): evaluate array-backed sensitive-extension scan - #767
seonghobae wants to merge 10 commits into
Conversation
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueNo actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough
Changes민감 확장자 컬렉션
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~5 minutes Change: Refactor Merge Risk: ⚪ Minimal · up to The scan’s behavior is unchanged, and the type change does not affect a supported external API. No actionable merge risk remains. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
💡 What: `Constants.defaultSensitiveExtensions`를 `List`에서 `Array`로 변경했습니다.
🎯 Why: 디렉토리 탐색 중 각 파일마다 `.any {}`를 호출할 때, `List`는 매번 `Iterator` 객체를 할당하지만, `Array`를 사용하면 인라인 처리되어 일반 for 루프를 사용하므로 불필요한 객체 생성을 방지할 수 있습니다.
📊 Impact: 많은 수의 파일을 탐색할 때 가비지 컬렉터(GC) 오버헤드를 줄이고 이론적인 탐색 속도를 향상시킵니다.
🔬 Measurement: 코드 컴파일 시 `Array.any`가 `Iterator` 할당 없이 인라인으로 전개되는 것을 통해 최적화가 적용됨을 알 수 있습니다.
process_ignore_file의 고정 민감 확장자 집합을List에서Array로 바꾸는 성능 후보입니다.Kotlin/JVM 구현상
Iterable.any와Array.any의 순회 방식이 다를 수 있다는 점은 최적화 가설의 근거일 뿐, 실제 html4tree workload의 buyer-visible 성능 개선 증거는 아닙니다. 기존 PR 본문의 GC/속도 향상 표현은 대표 workload 측정 전에는 확정하지 않습니다.소급
.jules/bolt.md기록은 protectedmaster와 동일하게 복구했습니다. 현재 source delta는 collection representation 변경에 집중합니다.#758도 같은 병목을 겨냥한 sibling 후보이며, 그쪽은 별도 array를 추가하고 기존 List alias를 남기는 구현입니다. 두 PR 중 하나를 단순히 중복이라는 이유로 닫지 않습니다. protected base와 두 후보를 같은 조건에서 비교해 semantics/evidence를 완전히 승계한 쪽이 확인된 뒤에만 predecessor 종료를 판단합니다.
Promotion acceptance:
측정 전에는 Draft를 유지하고 자동 merge하지 않습니다.