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.
Checking the stable version of the documentation...
Performance
Hereda: Object
Expone los datos relacionados con el rendimiento.
Descripción
This class provides access to a number of different monitors related to performance, such as memory usage, draw calls, and FPS. These are the same as the values displayed in the Monitor tab in the editor's Debugger panel. By using the get_monitor() method of this class, you can access this data from your code.
You can add custom monitors using the add_custom_monitor() method. Custom monitors are available in Monitor tab in the editor's Debugger panel together with built-in monitors.
Note: Some of the built-in monitors are only available in debug mode and will always return 0 when used in a project exported in release mode.
Note: Some of the built-in monitors are not updated in real-time for performance reasons, so there may be a delay of up to 1 second between changes.
Note: Custom monitors do not support negative values. Negative values are clamped to 0.
Métodos
void |
add_custom_monitor(id: StringName, callable: Callable, arguments: Array = [], type: MonitorType = 0) |
get_monitor(monitor: Monitor) const |
|
void |
Enumeraciones
enum Monitor: 🔗
Monitor TIME_FPS = 0
El número de fotogramas renderizados en el último segundo. Esta métrica solo se actualiza una vez por segundo, incluso si se consulta con más frecuencia. Cuanto mayor, mejor.
Monitor TIME_PROCESS = 1
El tiempo que tomó completar un fotograma, en segundos. Cuanto menor, mejor.
Monitor TIME_PHYSICS_PROCESS = 2
El tiempo que tomó completar un fotograma de la física, en segundos. Cuanto menor, mejor.
Tiempo que tardó en completarse un paso de navegación, en segundos. Esto incluye las actualizaciones del mapa de navegación, así como los cálculos de evitación de agentes. Cuanto menor, mejor.
Monitor MEMORY_STATIC = 4
Memoria estática actualmente utilizada, en bytes. No está disponible en las versiones de lanzamiento. Cuanto menor, mejor.
Monitor MEMORY_STATIC_MAX = 5
Memoria estática disponible. No disponible en las versiones de lanzamiento. Cuanto menor, mejor.
Monitor MEMORY_MESSAGE_BUFFER_MAX = 6
Máxima cantidad de memoria utilizada por el búfer de la cola de mensajes, en bytes. La cola de mensajes se utiliza para llamadas a funciones diferidas y notificaciones. Cuanto menor, mejor.
Monitor OBJECT_COUNT = 7
Número de objetos instanciados actualmente (incluidos los nodos). Cuanto menor, mejor.
Monitor OBJECT_RESOURCE_COUNT = 8
Número de recursos utilizados actualmente. Cuanto menor, mejor.
Monitor OBJECT_NODE_COUNT = 9
Número de nodos actualmente instanciados en el árbol de escenas. Esto también incluye el nodo raíz. Cuanto menor, mejor.
Monitor OBJECT_ORPHAN_NODE_COUNT = 10
Número de nodos huérfanos, es decir, nodos que no están emparentados con un nodo del árbol de la escena. Cuanto menor, mejor.
Nota: Esto solo está disponible en modo de depuración y siempre devolverá 0 cuando se use en un proyecto exportado en modo de lanzamiento.
Monitor RENDER_TOTAL_OBJECTS_IN_FRAME = 11
El número total de objetos en el último fotograma renderizado. Esta métrica no incluye objetos eliminados (ya sea ocultando nodos, culling de frustum o culling de oclusión). Cuanto menor, mejor.
Monitor RENDER_TOTAL_PRIMITIVES_IN_FRAME = 12
El número total de vértices o índices renderizados en el último fotograma renderizado. Esta métrica no incluye primitivas de objetos eliminados (ya sea ocultando nodos, culling de frustum o culling de oclusión). Debido a la pre-pasada de profundidad y las pasadas de sombra, el número de primitivas es siempre mayor que el número real de vértices en la escena (típicamente el doble o triple del recuento de vértices original). Cuanto menor, mejor.
Monitor RENDER_TOTAL_DRAW_CALLS_IN_FRAME = 13
El número total de llamadas de dibujado realizadas en el último fotograma renderizado. Esta métrica no incluye objetos eliminados (ya sea ocultando nodos, culling de frustum o culling de oclusión), ya que no resultan en llamadas de dibujado. Cuanto menor, mejor.
Monitor RENDER_VIDEO_MEM_USED = 14
La cantidad de memoria de vídeo utilizada (memoria de texturas y vértices combinada, en bytes). Dado que esta métrica también incluye asignaciones varias, este valor es siempre mayor que la suma de RENDER_TEXTURE_MEM_USED y RENDER_BUFFER_MEM_USED. Cuanto menor, mejor.
Monitor RENDER_TEXTURE_MEM_USED = 15
La cantidad de memoria de textura utilizada (en bytes). Cuanto menor, mejor.
Monitor RENDER_BUFFER_MEM_USED = 16
La cantidad de memoria de búfer de renderizado utilizada (en bytes). Cuanto menor, mejor.
Monitor PHYSICS_2D_ACTIVE_OBJECTS = 17
Número de nodos RigidBody2D activos en el juego. Cuanto menor, mejor.
Monitor PHYSICS_2D_COLLISION_PAIRS = 18
Número de pares de colisión en el motor de física 2D. Cuanto menor, mejor.
Monitor PHYSICS_2D_ISLAND_COUNT = 19
Número de islas en el motor de física 2D. Cuanto menor, mejor.
Monitor PHYSICS_3D_ACTIVE_OBJECTS = 20
Número de nodos activos de RigidBody3D y VehicleBody3D en el juego. Cuanto menor, mejor.
Monitor PHYSICS_3D_COLLISION_PAIRS = 21
Número de pares de colisión en el motor de física 3D. Cuanto menor, mejor.
Monitor PHYSICS_3D_ISLAND_COUNT = 22
Número de islas en el motor de física 3D. Cuanto menor, mejor.
Monitor AUDIO_OUTPUT_LATENCY = 23
Latencia de salida del AudioServer. Equivalente a llamar a AudioServer.get_output_latency(). No se recomienda llamar a esto en cada fotograma.
Número de mapas de navegación activos en NavigationServer2D y NavigationServer3D. Esto también incluye los mapas de navegación por defecto vacíos creados por instancias de World2D y World3D.
Número de regiones de navegación activas en NavigationServer2D y NavigationServer3D.
Número de agentes de navegación activos procesando evasión en NavigationServer2D y NavigationServer3D.
Número de enlaces de navegación activos en NavigationServer2D y NavigationServer3D.
Número de polígonos de malla de navegación en NavigationServer2D y NavigationServer3D.
Número de aristas de polígonos de malla de navegación en NavigationServer2D y NavigationServer3D.
Número de aristas de polígono de la malla de navegación que se fusionaron debido a la superposición de claves de aristas en NavigationServer2D y NavigationServer3D.
Número de aristas de polígono que se consideran conectadas por proximidad de aristas NavigationServer2D y NavigationServer3D.
Número de aristas de polígono de la malla de navegación que no se pudieron fusionar en NavigationServer2D y NavigationServer3D. Las aristas aún pueden estar conectadas por proximidad de aristas o con enlaces.
Número de obstáculos de navegación activos en NavigationServer2D y NavigationServer3D.
Monitor PIPELINE_COMPILATIONS_CANVAS = 34
Número de compilaciones de canalización activadas por el renderizador del lienzo 2D.
Monitor PIPELINE_COMPILATIONS_MESH = 35
El número de compilaciones de canalización activadas al cargar mallas. Estas compilaciones se traducirán en tiempos de carga más largos la primera vez que el usuario ejecute el juego y se requiera la canalización.
Monitor PIPELINE_COMPILATIONS_SURFACE = 36
Number of pipeline compilations that were triggered by building the surface cache before rendering the scene. These compilations will show up as a stutter when loading a scene the first time a user runs the game and the pipeline is required.
Monitor PIPELINE_COMPILATIONS_DRAW = 37
Number of pipeline compilations that were triggered while drawing the scene. These compilations will show up as stutters during gameplay the first time a user runs the game and the pipeline is required.
Monitor PIPELINE_COMPILATIONS_SPECIALIZATION = 38
Number of pipeline compilations that were triggered to optimize the current scene. These compilations are done in the background and should not cause any stutters whatsoever.
Número de mapas de navegación activos en el NavigationServer2D. Esto también incluye los mapas de navegación predeterminados vacíos creados por instancias de World2D.
Número de regiones de navegación activas en el NavigationServer2D.
Número de agentes de navegación activos procesando la evitación en el NavigationServer2D.
Número de enlaces de navegación activos en el NavigationServer2D.
Número de polígonos de malla de navegación en el NavigationServer2D.
Número de aristas de polígono de malla de navegación en el NavigationServer2D.
Número de aristas de polígono de la malla de navegación que se fusionaron debido a la superposición de claves de aristas en el NavigationServer2D.
Número de bordes de polígono que se consideran conectados por proximidad de borde NavigationServer2D.
Número de bordes de polígonos de malla de navegación que no se pudieron fusionar en NavigationServer2D. Los bordes aún pueden estar conectados por proximidad o mediante enlaces.
Número de obstáculos de navegación activos en el NavigationServer2D.
Número de mapas de navegación activos en el NavigationServer3D. Esto también incluye los mapas de navegación predeterminados vacíos creados por instancias de World3D.
Número de regiones de navegación activas en el NavigationServer3D.
Número de agentes de navegación activos procesando la evitación en el NavigationServer3D.
Número de enlaces de navegación activos en el NavigationServer3D.
Número de polígonos de malla de navegación en el NavigationServer3D.
Número de aristas de polígono de la malla de navegación en el NavigationServer3D.
Número de aristas de polígono de la malla de navegación que se fusionaron debido a la superposición de claves de aristas en el NavigationServer3D.
Número de aristas de polígono que se consideran conectadas por proximidad de aristas NavigationServer3D.
Número de aristas de polígono de la malla de navegación que no se pudieron fusionar en el NavigationServer3D. Las aristas aún pueden estar conectadas por proximidad de aristas o con enlaces.
Número de obstáculos de navegación activos en el NavigationServer3D.
Monitor MONITOR_MAX = 59
Representa el tamaño del enum Monitor.
enum MonitorType: 🔗
MonitorType MONITOR_TYPE_QUANTITY = 0
La salida del monitor tiene el formato de un valor entero.
MonitorType MONITOR_TYPE_MEMORY = 1
La salida del monitor está formateada como memoria de ordenador. Los valores enviados deben representar un número de bytes.
MonitorType MONITOR_TYPE_TIME = 2
La salida del monitor está formateada como tiempo en milisegundos. Los valores enviados deben representar un tiempo en segundos (no milisegundos).
MonitorType MONITOR_TYPE_PERCENTAGE = 3
La salida del monitor está formateada como un porcentaje. Los valores enviados deben representar un valor fraccional en lugar del porcentaje directamente, p. ej. 0.5 para 50.00%.
Descripciones de Métodos
void add_custom_monitor(id: StringName, callable: Callable, arguments: Array = [], type: MonitorType = 0) 🔗
Adds a custom monitor with the name id. You can specify the category of the monitor using slash delimiters in id (for example: "Game/NumberOfNPCs"). If there is more than one slash delimiter, then the default category is used. The default category is "Custom". Prints an error if given id is already present.
func _ready():
var monitor_value = Callable(self, "get_monitor_value")
# Adds monitor with name "MyName" to category "MyCategory".
Performance.add_custom_monitor("MyCategory/MyMonitor", monitor_value)
# Adds monitor with name "MyName" to category "Custom".
# Note: "MyCategory/MyMonitor" and "MyMonitor" have same name but different IDs, so the code is valid.
Performance.add_custom_monitor("MyMonitor", monitor_value)
# Adds monitor with name "MyName" to category "Custom".
# Note: "MyMonitor" and "Custom/MyMonitor" have same name and same category but different IDs, so the code is valid.
Performance.add_custom_monitor("Custom/MyMonitor", monitor_value)
# Adds monitor with name "MyCategoryOne/MyCategoryTwo/MyMonitor" to category "Custom".
Performance.add_custom_monitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitor_value)
func get_monitor_value():
return randi() % 25
public override void _Ready()
{
var monitorValue = new Callable(this, MethodName.GetMonitorValue);
// Adds monitor with name "MyName" to category "MyCategory".
Performance.AddCustomMonitor("MyCategory/MyMonitor", monitorValue);
// Adds monitor with name "MyName" to category "Custom".
// Note: "MyCategory/MyMonitor" and "MyMonitor" have same name but different ids so the code is valid.
Performance.AddCustomMonitor("MyMonitor", monitorValue);
// Adds monitor with name "MyName" to category "Custom".
// Note: "MyMonitor" and "Custom/MyMonitor" have same name and same category but different ids so the code is valid.
Performance.AddCustomMonitor("Custom/MyMonitor", monitorValue);
// Adds monitor with name "MyCategoryOne/MyCategoryTwo/MyMonitor" to category "Custom".
Performance.AddCustomMonitor("MyCategoryOne/MyCategoryTwo/MyMonitor", monitorValue);
}
public int GetMonitorValue()
{
return GD.Randi() % 25;
}
The debugger calls the callable to get the value of custom monitor. The callable must return a zero or positive integer or floating-point number.
Callables are called with arguments supplied in argument array.
Variant get_custom_monitor(id: StringName) 🔗
Devuelve el valor del monitor personalizado con el id dado. Se llama al invocable para obtener el valor del monitor personalizado. Véase también has_custom_monitor(). Imprime un error si el id dado está ausente.
Array[StringName] get_custom_monitor_names() 🔗
Devuelve los nombres de los monitores personalizados activos en un Array.
PackedInt32Array get_custom_monitor_types() 🔗
Devuelve los valores MonitorType de los monitores personalizados activos en un Array.
float get_monitor(monitor: Monitor) const 🔗
Devuelve el valor de uno de los monitores integrados disponibles. Se debe proporcionar una de los constantes Monitor como argumento, de la siguiente manera:
print(Performance.get_monitor(Performance.TIME_FPS)) # Imprime los FPS en la consola.
GD.Print(Performance.GetMonitor(Performance.Monitor.TimeFps)); // Imprime los FPS en la consola.
Véase get_custom_monitor() para obtener los valores de los monitores de rendimiento personalizados.
int get_monitor_modification_time() 🔗
Devuelve el último tick en el que se añadió/eliminó el monitor personalizado (en microsegundos desde que se inició el motor). Esto se establece en Time.get_ticks_usec() cuando el monitor se actualiza.
bool has_custom_monitor(id: StringName) 🔗
Devuelve true si el monitor personalizado con el id dado está presente, false en caso contrario.
void remove_custom_monitor(id: StringName) 🔗
Elimina el monitor personalizado con el id dado. Imprime un error si el id dado ya está ausente.