--- name: perf-audit label: 성능 감사 description: 코드 복잡도, 성능 병목, 메모리 이슈를 분석하고 최적화 방안을 제시합니다. icon: \uE9D9 allowed-tools: - file_read - grep - folder_map - search_codebase - glob - html_create tabs: code --- 코드베이스의 성능 관련 이슈를 분석하고 최적화 보고서를 생성하세요. ## 워크플로우 1. **프로젝트 분석**: folder_map으로 구조 파악, 언어/프레임워크 식별 2. **복잡도 분석**: 파일별 줄 수, 메서드 크기, 중첩 깊이 측정 3. **성능 안티패턴 탐지**: grep으로 알려진 성능 이슈 패턴 검색 4. **메모리 이슈 탐지**: 리소스 해제 누락, 대용량 할당 패턴 5. **보고서 생성**: html_create로 성능 감사 보고서 ## 분석 항목 ### 코드 복잡도 지표 - **파일 크기**: 500줄 이상 파일 식별 - **메서드 크기**: 50줄 이상 메서드 식별 - **중첩 깊이**: 4단계 이상 들여쓰기 - **매개변수 수**: 5개 이상 파라미터 메서드 ### 성능 안티패턴 #### 데이터베이스 - N+1 쿼리 패턴 (루프 내 DB 호출) - SELECT * 사용 (불필요한 컬럼 로드) - 인덱스 미사용 쿼리 힌트 #### 메모리 - IDisposable 미해제 (using 미사용) - 대용량 문자열 결합 (StringBuilder 미사용) - 정적 컬렉션 무한 증가 - 이벤트 핸들러 미해제 (메모리 누수) #### I/O - 동기 파일 I/O (async 미사용) - 동기 네트워크 호출 - 불필요한 직렬화/역직렬화 #### 알고리즘 - O(n²) 이상 루프 (중첩 foreach/for) - 반복 계산 (캐싱 미적용) - LINQ 체인의 불필요한 ToList() #### 프론트엔드 - 불필요한 리렌더링 패턴 - 대용량 번들 임포트 - 이미지 최적화 미적용 ### .NET 전용 패턴 ``` 탐지 대상: - Task.Result / .Wait() (데드락 위험) - lock 내부 async 호출 - GC.Collect() 직접 호출 - Reflection 반복 사용 - string + string 반복 (루프 내) ``` ## 출력 형식 ### 성능 감사 보고서 **요약 대시보드** | 지표 | 값 | 상태 | |------|-----|------| | 총 파일 수 | ... | — | | 대형 파일 (500줄+) | ... | ⚠ | | 대형 메서드 (50줄+) | ... | ⚠ | | 성능 안티패턴 | ... | 🔴 | | 메모리 이슈 | ... | 🟡 | **상세 이슈 목록** | 우선순위 | 파일 | 라인 | 이슈 | 영향 | 권장 조치 | |---------|------|------|------|------|----------| | 🔴 높음 | ... | ... | N+1 쿼리 | 응답 지연 | 일괄 로드 | ## 규칙 - 코드를 수정하지 않음 (분석 + 보고서만) - 성능 이슈는 영향도와 수정 난이도를 함께 평가 - 추측보다 패턴 기반 탐지 우선 - 한국어로 작성