Performance

Inherits: Object

Exposes performance-related data.

Description

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.

Note: A few of these monitors are only available in debug mode and will always return 0 when used in a release build.

Note: Many of these monitors are not updated in real-time, so there may be a short delay between changes.

Methods

float

get_monitor ( Monitor monitor ) const


Enumerations

enum Monitor:

Monitor TIME_FPS = 0

Number of frames per second.

Monitor TIME_PROCESS = 1

Time it took to complete one frame, in seconds.

Monitor TIME_PHYSICS_PROCESS = 2

Time it took to complete one physics frame, in seconds.

Monitor MEMORY_STATIC = 3

Static memory currently used, in bytes. Not available in release builds.

Monitor MEMORY_DYNAMIC = 4

Dynamic memory currently used, in bytes. Not available in release builds.

Monitor MEMORY_STATIC_MAX = 5

Available static memory. Not available in release builds.

Monitor MEMORY_DYNAMIC_MAX = 6

Available dynamic memory. Not available in release builds.

Monitor MEMORY_MESSAGE_BUFFER_MAX = 7

Largest amount of memory the message queue buffer has used, in bytes. The message queue is used for deferred functions calls and notifications.

Monitor OBJECT_COUNT = 8

Number of objects currently instanced (including nodes).

Monitor OBJECT_RESOURCE_COUNT = 9

Number of resources currently used.

Monitor OBJECT_NODE_COUNT = 10

Number of nodes currently instanced in the scene tree. This also includes the root node.

Monitor OBJECT_ORPHAN_NODE_COUNT = 11

Number of orphan nodes, i.e. nodes which are not parented to a node of the scene tree.

Monitor RENDER_OBJECTS_IN_FRAME = 12

3D objects drawn per frame.

Monitor RENDER_VERTICES_IN_FRAME = 13

Vertices drawn per frame. 3D only.

Monitor RENDER_MATERIAL_CHANGES_IN_FRAME = 14

Material changes per frame. 3D only.

Monitor RENDER_SHADER_CHANGES_IN_FRAME = 15

Shader changes per frame. 3D only.

Monitor RENDER_SURFACE_CHANGES_IN_FRAME = 16

Render surface changes per frame. 3D only.

Monitor RENDER_DRAW_CALLS_IN_FRAME = 17

Draw calls per frame. 3D only.

Monitor RENDER_2D_ITEMS_IN_FRAME = 18

Items or joined items drawn per frame.

Monitor RENDER_2D_DRAW_CALLS_IN_FRAME = 19

Draw calls per frame.

Monitor RENDER_VIDEO_MEM_USED = 20

The amount of video memory used, i.e. texture and vertex memory combined.

Monitor RENDER_TEXTURE_MEM_USED = 21

The amount of texture memory used.

Monitor RENDER_VERTEX_MEM_USED = 22

The amount of vertex memory used.

Monitor RENDER_USAGE_VIDEO_MEM_TOTAL = 23

Unimplemented in the GLES2 and GLES3 rendering backends, always returns 0.

Monitor PHYSICS_2D_ACTIVE_OBJECTS = 24

Number of active RigidBody2D nodes in the game.

Monitor PHYSICS_2D_COLLISION_PAIRS = 25

Number of collision pairs in the 2D physics engine.

Monitor PHYSICS_2D_ISLAND_COUNT = 26

Number of islands in the 2D physics engine.

Monitor PHYSICS_3D_ACTIVE_OBJECTS = 27

Number of active RigidBody and VehicleBody nodes in the game.

Monitor PHYSICS_3D_COLLISION_PAIRS = 28

Number of collision pairs in the 3D physics engine.

Monitor PHYSICS_3D_ISLAND_COUNT = 29

Number of islands in the 3D physics engine.

Monitor AUDIO_OUTPUT_LATENCY = 30

Output latency of the AudioServer.

Monitor MONITOR_MAX = 31

Represents the size of the Monitor enum.


Method Descriptions

float get_monitor ( Monitor monitor ) const

Returns the value of one of the available monitors. You should provide one of the Monitor constants as the argument, like this:

print(Performance.get_monitor(Performance.TIME_FPS)) # Prints the FPS to the console