Up to date

This page is up to date for Godot 4.2. If you still find outdated information, please open an issue.

Usando perfiladores de C++

Para optimizar el rendimiento de Godot, es necesario saber qué aspectos optimizar primero. Para lograr esto, los perfiles son herramientas útiles.

Nota

There is a built-in GDScript profiler in the editor, but using C++ profiler may be useful in cases where the GDScript profiler is not accurate enough or is missing information due to bugs in the profiler.

Configurando Godot

Para obtener información de perfilación útil, es absolutamente necesario utilizar una compilación de Godot que incluya símbolos de depuración. Los binarios oficiales no incluyen símbolos de depuración, ya que esto aumentaría significativamente el tamaño de la descarga.

Para obtener datos de perfilado que se ajusten mejor al entorno de producción (pero con símbolos de depuración), deberás compilar los binarios con las siguientes opciones de SCons production=yes debug_symbols=yes.

It is possible to run a profiler on less optimized builds (e.g. target=template_debug without LTO), but results will naturally be less representative of real world conditions.

Advertencia

No elimines los símbolos de depuración en los binarios usando el comando strip después de compilarlos. De lo contrario, ya no obtendrás información de perfilación útil al ejecutar un perfilador.

Realización de pruebas de referencia de los tiempos de inicio/apagado

Si estás buscando optimizar el rendimiento de inicio y apagado de Godot, puedes indicar al perfilador que use la opción de línea de comandos --quit en el binario de Godot. Esto hará que Godot se cierre justo después de que haya terminado de iniciarse. La opción --quit funciona con --editor, --project-manager o --path <ruta al directorio del proyecto> (que ejecuta un proyecto directamente).

Ver también

Consulta Tutorial de línea de comandos para obtener más información sobre los argumentos de línea de comandos admitidos por Godot.

Instrucciones a Perfiladores especificos

VerySleepy

  • Start the Godot editor or your project first. If you start the Project Manager, make sure to edit or run a project first. Otherwise, the profiler will not track the child process since the Project Manager will spawn a child process for every project edited or run.

  • Abre VerySleepy y selecciona el ejecutable de Godot en la lista de procesos que aparece a la izquierda:

../../../_images/cpp_profiler_verysleepy_select_process.png
  • Haz clic en el botón Profile All (Perfilar Todo) que se encuentra a la derecha para comenzar el perfilado.

  • Realiza las acciones que deseas perfilar en el editor o el proyecto. Cuando hayas terminado, haz clic en Stop (Detener) (no en Abortar).

  • Espera a que aparezca la ventana de resultados.

  • Una vez que aparezca la ventana de resultados, filtra la vista para eliminar los módulos externos (como el controlador de gráficos). Puedes filtrar por módulo buscando una línea cuyo Module coincida con el nombre del ejecutable de Godot, haz clic derecho en esa línea y elige Filter Module to <Godot executable name> en el menú desplegable que aparece.

  • Tu ventana de resultados ahora debería verse algo como esto:

../../../_images/cpp_profiler_verysleepy_results_filtered.png

HotSpot

  • Abre HotSpot. Haz clic en Record Data (Registrar Datos):

../../../_images/cpp_profiler_hotspot_welcome.png
  • En la siguiente ventana, especifica la ruta al ejecutable de Godot que incluye los símbolos de depuración.

  • Especifica los argumentos de línea de comandos para ejecutar un proyecto específico, con o sin el editor.

  • La ruta del directorio de trabajo puede ser cualquier cosa si se utiliza una ruta absoluta para el argumento de línea de comandos --path. De lo contrario, debe configurarse de manera que la ruta relativa al proyecto sea válida.

  • Asegúrate de que Elevate Privileges (Elevar Privilegios) esté marcado si tienes privilegios administrativos. Aunque no es esencial para perfilar Godot, esto asegurará que todos los eventos se puedan capturar. De lo contrario, algunos eventos podrían faltar en la captura. Tus configuraciones deberían verse algo como esto:

../../../_images/cpp_profiler_hotspot_record.png
  • Haz clic en Start Recording (Iniciar Grabación) y realiza las acciones que deseas perfilar en el editor o el proyecto.

  • Cierra el editor/proyecto normalmente o usa el botón Stop Profiling (Detener Perfilar) en HotSpot para detener el perfilado de forma anticipada. Detener el perfilado de forma anticipada puede resultar en perfiles más limpios si no estás interesado en el procedimiento de cierre del motor (engine's quit procedure).

  • Haz clic en View Results (Ver Resultados) y espera a que se genere la visualización del perfilado:

../../../_images/cpp_profiler_hotspot_view_results.png
  • Utiliza las pestañas en la parte superior para navegar entre las diferentes vistas. Estas vistas muestran los mismos datos, pero de diferentes maneras. La pestaña Flame Graph (Gráfico de Llamadas) es una buena manera de ver rápidamente qué funciones ocupan más tiempo. Estas funciones son las más importantes para optimizar, ya que mejorarlas tendrá el mayor impacto en el rendimiento.

  • En la parte inferior de todas las pestañas, excepto en Summary (Resumen), también verás una lista de hilos de CPU iniciados por el motor junto con la utilización de la CPU para cada hilo. Esto te permite ver los hilos que pueden ser un cuello de botella en un momento dado.

../../../_images/cpp_profiler_hotspot_flame_graph.png

Nota

Si no deseas que el procedimiento de inicio esté incluido en el perfilado, también puedes conectar HotSpot a un proceso en ejecución haciendo clic en Record Data (Registrar Datos) y luego configurando la opción del menú desplegable Launch Application (Iniciar Aplicación) en Attach To Process(es) (Adjuntar a Proceso(s)).

Este flujo de trabajo basado en la conexión de procesos es similar al utilizado por VerySleepy.

Xcode Instruments

  • Abre Xcode. Selecciona Open Developer Tool (Abrir Herramienta de Desarrollo) - Instruments (Instrumentos) desde el menú de la aplicación Xcode:

  • Haz doble clic en Time Profiler (Perfilador de Tiempo) en la ventana de Instruments (Instrumentos):

../../../_images/cpp_profiler_xcode_menu.png
  • En la ventana de Time Profiler (Perfilador de Tiempo), haz clic en el menú Target (Objetivo), selecciona Choose target... (Elegir objetivo) y especifica la ruta del ejecutable de Godot, los argumentos de línea de comandos y las variables de entorno en la siguiente ventana.

../../../_images/cpp_profiler_time_profiler.png
  • También puedes adjuntar el Time Profiler a un proceso en ejecución seleccionándolo desde el menú Target (Objetivo).

  • Haz clic en el botón Start an immediate mode recording (Iniciar una grabación en modo inmediato) para comenzar el perfilado.

../../../_images/cpp_profiler_time_profiler_record.png
  • Realiza las acciones que deseas perfilar en el editor o el proyecto. Cuando hayas terminado, haz clic en el botón Stop (Detener).

  • Espera a que aparezcan los resultados.

  • En la parte inferior de la ventana verás un árbol de llamadas para todos los hilos de la CPU iniciados, así como una descripción general de la Heaviest Stack Trace (Ruta de Pila más Pesada).

  • Selecciona Ocultar bibliotecas del sistema en el menú Call Tree (Árbol de Llamadas) (en la parte inferior de la ventana) para eliminar los módulos externos.

  • Puedes utilizar la línea de tiempo en la parte superior de la ventana para mostrar detalles para un período de tiempo específico.

../../../_images/cpp_profiler_time_profiler_result.png