빠른 흐름
프로파일 캡처 A
프로파일 캡처 B
Profile Analyzer에서 비교기본 흐름
Profile Analyzer의 역할
Profile Analyzer는 두 개의 프로파일 데이터를 나란히 놓고, 변경이 실제로 얼마나 영향을 줬는지 비교하는 도구입니다. Unity 공식 가이드도 변경 전후 데이터를 비교해 성능 개선인지 회귀인지 판단하라고 권장합니다. 직관이나 추측이 아니라 수치 비교를 기반으로 최적화 효과를 판단할 수 있다는 점에서, 프로파일러 단독 사용보다 한 단계 더 나아간 도구입니다.
전후 비교 절차
변경 전 프로파일 데이터를 저장하고, 코드를 수정한 뒤 같은 장면에서 다시 캡처합니다. 두 캡처를 Profile Analyzer에 불러오면 마커별 평균, 중앙값, 최솟값, 최댓값을 나란히 비교할 수 있습니다. 예를 들어 오브젝트 풀링 적용 전후의 GC Alloc 감소, Main Thread 시간 변화, 스파이크 빈도 변화를 수치로 확인할 수 있습니다.
1. 오브젝트 풀링 적용 전 프로파일 저장
2. 오브젝트 풀링 적용 후 프로파일 저장
3. Profile Analyzer에서 두 캡처 비교
4. GC Alloc, Main Thread 시간, 스파이크 빈도 변화 확인평균과 분포를 함께 보는 이유
평균만 보지 말고 프레임 분포와 스파이크 패턴까지 함께 봐야 체감 성능 차이를 이해하기 쉽습니다. 평균이 개선됐더라도 스파이크 빈도가 늘었다면 체감은 오히려 나빠질 수 있습니다. 최적화 작업은 "빠를 것 같은 수정"보다 "비교로 확인된 수정"이 더 믿을 만합니다.
체크포인트
| 상황 | 적합한 선택 |
|---|---|
| 최적화 전후 효과 수치로 확인 | Profile Analyzer에서 두 캡처 비교 |
| 업데이트 후 느려진 구간 탐지 | 변경 전후 프로파일 저장 → Compare |
| 평균만 좋아졌는데 체감은 나쁨 | 스파이크 빈도, 프레임 분포까지 같이 확인 |
| Profiler 단독으로 판단 어려울 때 | Profile Analyzer로 다수 프레임 통계 분석 |
| 비교 포인트 | 먼저 볼 값 | 이유 |
|---|---|---|
| 평균이 실제로 나아졌는가 | Median/Mean frame time | 전반적 추세를 먼저 확인할 수 있음 |
| 체감이 나아졌는가 | 95th percentile, spike 분포 | 드문 끊김은 평균보다 분포가 더 잘 보여 줌 |
| 특정 마커가 개선됐는가 | marker compare | GC.Alloc, Physics, UI rebuild 같은 원인을 좁히기 쉬움 |
| 실험이 공정했는가 | 같은 장면, 같은 입력, 같은 길이 | 조건이 다르면 수치 비교가 왜곡됨 |
주의할 점
한 번의 캡처만 보고 결론 내리면 환경 잡음에 흔들릴 수 있습니다. 같은 조건에서 여러 번 측정하고 비교해야 의미 있는 판단이 가능합니다.
// ❌ 단일 캡처로 최적화 효과 판단
"오브젝트 풀링 전 15ms → 후 12ms" → 그 1번 측정이 운이었을 수도 있음
// ✅ Profile Analyzer 비교 흐름
1. 최적화 전: 같은 장면 30초 Profiler 녹화 → .pdata 저장 (A)
2. 최적화 후: 동일 조건 30초 녹화 → .pdata 저장 (B)
3. Profile Analyzer > Compare 탭 → A vs B 로드
4. 확인 항목:
- Median frame time: 안정적으로 감소했는가?
- 95th percentile: 스파이크가 줄었는가?
- GC.Alloc: 할당이 실제로 감소했는가?서로 다른 플레이 경로를 비교하면 Profile Analyzer 수치가 좋아 보여도 결론이 틀릴 수 있습니다. 같은 장면, 같은 카메라 경로, 같은 시간 길이로 캡처를 맞추세요.
// ❌ 전: 도시 장면 20초 / 후: 실내 장면 20초
→ 최적화 효과가 아니라 장면 차이를 비교한 셈
// ✅ 비교 조건 고정
같은 세이브 위치
같은 카메라 이동
같은 전투 재현
같은 길이의 캡처참고 링크
2 sources