95 lines
2.7 KiB
Markdown
95 lines
2.7 KiB
Markdown
---
|
|
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 쿼리 | 응답 지연 | 일괄 로드 |
|
|
|
|
## 규칙
|
|
- 코드를 수정하지 않음 (분석 + 보고서만)
|
|
- 성능 이슈는 영향도와 수정 난이도를 함께 평가
|
|
- 추측보다 패턴 기반 탐지 우선
|
|
- 한국어로 작성
|