# 모든 함수 호출 계측

> Enable deep profiling to capture detailed function call information.

프로파일러는 [프로파일러 마커](/engine/6000.0/manual/analysis/profiler/markers.md)에 명시적으로 래핑된 코드 타이밍만 프로파일링합니다. 여기에는 Unity의 네이티브 코드에서 스크립팅 코드로의 호출에 대한 첫 번째 호출 스택 뎁스가 포함됩니다(예: `MonoBehaviour.Start`, `MonoBehaviour.Update` 또는 유사 메서드).

스크립팅 코드의 자식 샘플로 시각화할 수 있는 유일한 샘플은 Unity의 API를 호출하는 샘플(해당 API가 계측된 경우) 또는 명시적 프로파일러 마커 계측이 있는 자체 코드입니다. 성능 오버헤드를 유발하는 대부분의 API 호출이 계측됩니다. 예를 들어 `Camera.main` API를 통해 메인 카메라에 액세스하면 `FindMainCamera` 샘플로 등록됩니다.

## 세부 프로파일링

모든 함수 호출 관련 데이터를 확보하여 코드의 어느 부분이 애플리케이션의 성능에 영향을 미치는지 알아보려면 **Deep Profile** 설정을 사용하면 됩니다. Deep Profile 설정을 활성화하면 프로파일러가 프로파일러 계측을 모든 스크립트 메서드에 삽입하여 최소한 첫 번째 호출 스택 뎁스를 포함한 모든 함수 호출을 Unity API에 기록합니다.

딥 프로파일링은 많은 리소스와 메모리를 소모합니다. 따라서 프로파일링이 진행될 때는 애플리케이션 실행 속도가 상당히 느려집니다. 딥 프로파일링은 간단한 스크립팅이 있는 작은 게임에 가장 적합합니다. 복잡한 스크립트 코드를 사용하는 경우 애플리케이션이 딥 프로파일링을 사용하지 못할 수 있으며, 다수의 대규모 애플리케이션의 경우 딥 프로파일링으로 인해 Unity에 메모리가 부족해질 수 있습니다.

### 딥 프로파일링 활성화

연결된 애플리케이션에서 성능 데이터를 수집하거나 Unity 에디터의 데이터를 수집하려는 경우 딥 프로파일링을 활성화하면 됩니다.

빌드된 애플리케이션에 대해 딥 프로파일링을 활성화하려면 다음 단계를 따르십시오.

1. **Build Profiles** 창을 엽니다(**File** > **Build Profiles**).
2. 애플리케이션의 타겟 플랫폼을 선택합니다.
3. **Development Build** 설정을 활성화합니다.
4. **Deep Profiling**을 활성화합니다.

에디터의 데이터를 수집할 때 세부 프로파일링을 활성화하는 방법은 다음과 같습니다.

1. 프로파일러 창(**Window** > **Analysis** > **Profiler**)을 엽니다.
2. [프로파일러 툴바](/engine/6000.0/manual/analysis/profiler/window-reference.md)에서 **Deep Profiler**를 선택합니다.

이후 프로파일링 세션을 시작하면 프로파일러가 모든 함수 호출을 계측합니다.

## 추가 리소스

* [빌드 프로필 프로파일 레퍼런스](/engine/6000.0/manual/analysis/profiler/collect-data/profiling-applications/build-settings-reference.md)
* [프로파일러 마커 소개](/engine/6000.0/manual/analysis/profiler/markers.md)
* [성능 데이터 수집 소개](/engine/6000.0/manual/analysis/profiler/collect-data/profiling-collect-data-introduction.md)
