2.7 KiB
2.7 KiB
name, label, description, icon, allowed-tools, tabs
| name | label | description | icon | allowed-tools | tabs | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| perf-audit | 성능 감사 | 코드 복잡도, 성능 병목, 메모리 이슈를 분석하고 최적화 방안을 제시합니다. | \uE9D9 |
|
code |
코드베이스의 성능 관련 이슈를 분석하고 최적화 보고서를 생성하세요.
워크플로우
- 프로젝트 분석: folder_map으로 구조 파악, 언어/프레임워크 식별
- 복잡도 분석: 파일별 줄 수, 메서드 크기, 중첩 깊이 측정
- 성능 안티패턴 탐지: grep으로 알려진 성능 이슈 패턴 검색
- 메모리 이슈 탐지: 리소스 해제 누락, 대용량 할당 패턴
- 보고서 생성: 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 쿼리 | 응답 지연 | 일괄 로드 |
규칙
- 코드를 수정하지 않음 (분석 + 보고서만)
- 성능 이슈는 영향도와 수정 난이도를 함께 평가
- 추측보다 패턴 기반 탐지 우선
- 한국어로 작성