---
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 쿼리 | 응답 지연 | 일괄 로드 |

## 규칙
- 코드를 수정하지 않음 (분석 + 보고서만)
- 성능 이슈는 영향도와 수정 난이도를 함께 평가
- 추측보다 패턴 기반 탐지 우선
- 한국어로 작성
