Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

C++ 프로파일러 사용하기

Godot의 성능을 최적화하려면 먼저 무엇을 최적화해야 하는지 알아야 합니다. 이를 위해 프로파일러는 유용한 도구입니다.

참고

편집기에는 :ref:`내장 GDScript 프로파일러 <doc_the_profiler>`가 있지만, GDScript 프로파일러가 충분히 정확하지 않거나 프로파일러의 버그로 인해 정보가 누락된 경우 C++ 프로파일러를 사용하는 것이 유용할 수 있습니다.

사용할 수 있는 프로세싱 타입은 두 가지가 있습니다:

샘플링 프로파일러는 실행 중인 프로그램을 주기적으로 중단하고 "샘플"을 수집하여 실행 중인 기능을 기록합니다. 프로파일러는 이 정보를 사용하여 프로그램이 어떤 기능에 가장 많은 시간을 소비했는지 추정합니다.

추적 프로파일러는 애플리케이션별 이벤트(예: 단일 프레임의 시작 및 끝)를 기록하여 "추적"이라는 로그를 생성하는 방식으로 작동합니다. 프로파일러는 추적을 사용하여 발생한 일에 대한 정확한 상위 수준 타임라인을 보여주는 그래프를 생성할 수 있습니다. 그러나 명시적으로 계측되지 않은 코드는 추적 프로파일러의 타임라인에 표시되지 않습니다.

Godot는 샘플링 프로파일러와 추적 프로파일러를 모두 지원하며 이미 추적 프로파일러와 함께 사용할 수 있는 일반적인 Godot 이벤트에 대한 로깅 코드를 포함하고 있습니다!

다양한 문제는 한 종류의 프로파일러를 사용하여 디버깅하는 것이 더 쉬울 수 있지만 사용할 규칙 세트를 제공하기는 어렵습니다. 두 가지를 모두 시도해 보고 그로부터 무엇을 배울 수 있는지 알아보세요!

프로필 공유하기

다음과 같은 주의 사항이 있습니다:

  • :ref:`VerySleepy <doc_profiler_very_sleepy>`(Windows에만 해당)

  • :ref:`Hotspot <doc_profiler_hotspot>`(Linux에만 해당)

  • :ref:`Instruments <doc_profiler_instruments>`(Apple에만 해당)

이러한 프로파일러는 가장 강력하거나 유연한 옵션은 아닐 수 있지만 독립 실행형 작동 및 제한된 기능 세트로 인해 사용하기가 더 쉬워집니다.

Godot 설정하기

유용한 프로파일링 정보를 얻으려면 디버깅 기호가 포함된 Godot 빌드를 사용하는 것이 절대적으로 필요합니다. 공식 바이너리에는 디버깅 기호가 포함되어 있지 않습니다. 디버깅 기호를 사용하면 다운로드 크기가 상당히 커질 수 있기 때문입니다.

프로덕션 환경과 가장 잘 일치하는 프로파일링 데이터(디버깅 기호 포함)를 얻으려면 production=yes debug_symbols=yes SCons 옵션을 사용하여 바이너리를 컴파일해야 합니다.

덜 최적화된 빌드(예: LTO가 없는 target=template_debug)에서 프로파일러를 실행할 수 있지만 결과는 당연히 실제 조건을 덜 대표하게 됩니다.

경고

바이너리를 컴파일한 후 strip 명령을 사용하여 바이너리의 디버깅 기호를 제거하지 마세요. 그렇지 않으면 프로파일러를 실행할 때 더 이상 유용한 프로파일링 정보를 얻을 수 없습니다.

시작/종료 시간 벤치마킹

Godot의 시작/종료 성능을 최적화하려는 경우, Godot 바이너리에서 --quit 명령줄 옵션을 사용하도록 프로파일러에 지시할 수 있습니다. 시작이 완료된 직후 Godot가 종료됩니다. --quit 옵션은 --editor, --project-manager``--path <path to project directory>``(프로젝트를 직접 실행)와 함께 작동합니다.

더 보기

Godot가 지원하는 더 많은 명령줄 인수는 :ref:`doc_command_line_tutorial`를 참조하세요.

프로파일러

Godot는 현재 세 가지 추적 프로파일러를 지원합니다:

  • Array

  • Perfetto

  • :ref:`Instruments <doc_profiler_instruments>`(Apple에만 해당)

참고

Perfetto is the default tracing system for Android, so pre-built export templates with Perfetto built-in and enabled are provided from the GitHub Releases page.

둘 중 하나를 사용하려면 소스에서 엔진을 빌드해야 합니다. 이전에 이 작업을 수행한 적이 없다면 프로파일링하려는 플랫폼에 대한 :ref:`이 문서 <doc_compiling_index>`를 읽어보세요. 여기에서도 동일한 단계를 수행해야 하지만 ``scons``에 대한 몇 가지 추가 인수가 필요합니다.