Flecs v4.0
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
Stats

Collection of statistics for world, queries, systems and pipelines. More...

Collaboration diagram for Stats:

Classes

struct  ecs_gauge_t
 Simple value that indicates current state. More...
 
struct  ecs_counter_t
 Monotonically increasing counter. More...
 
union  ecs_metric_t
 Make all metrics the same size, so we can iterate over fields. More...
 
struct  ecs_world_stats_t
 
struct  ecs_query_stats_t
 Statistics for a single query (use ecs_query_cache_stats_get) More...
 
struct  ecs_system_stats_t
 Statistics for a single system (use ecs_system_stats_get()) More...
 
struct  ecs_sync_stats_t
 Statistics for sync point. More...
 
struct  ecs_pipeline_stats_t
 Statistics for all systems in a pipeline. More...
 
struct  EcsStatsHeader
 Common data for statistics. More...
 
struct  EcsWorldStats
 Component that stores world statistics. More...
 
struct  EcsSystemStats
 Component that stores system statistics. More...
 
struct  EcsPipelineStats
 Component that stores pipeline statistics. More...
 
struct  EcsWorldSummary
 Component that stores a summary of world statistics. More...
 
struct  ecs_entities_memory_t
 Entity memory. More...
 
struct  ecs_component_memory_t
 
struct  ecs_component_index_memory_t
 Component index memory. More...
 
struct  ecs_query_memory_t
 Query memory. More...
 
struct  ecs_table_memory_t
 Table memory. More...
 
struct  ecs_table_histogram_t
 Table size histogram. More...
 
struct  ecs_commands_memory_t
 Commands memory. More...
 
struct  ecs_allocator_memory_t
 Allocator memory. More...
 
struct  EcsWorldMemory
 Component with memory statistics. More...
 

Macros

#define ECS_STAT_WINDOW   (60)
 
#define ECS_TABLE_MEMORY_HISTOGRAM_BUCKET_COUNT   14
 Table memory histogram constants.
 
#define ECS_TABLE_MEMORY_HISTOGRAM_MAX_COUNT   (1 << ECS_TABLE_MEMORY_HISTOGRAM_BUCKET_COUNT)
 

Typedefs

typedef struct ecs_gauge_t ecs_gauge_t
 Simple value that indicates current state.
 
typedef struct ecs_counter_t ecs_counter_t
 Monotonically increasing counter.
 
typedef union ecs_metric_t ecs_metric_t
 Make all metrics the same size, so we can iterate over fields.
 
typedef struct ecs_world_stats_t ecs_world_stats_t
 
typedef struct ecs_query_stats_t ecs_query_stats_t
 Statistics for a single query (use ecs_query_cache_stats_get)
 
typedef struct ecs_system_stats_t ecs_system_stats_t
 Statistics for a single system (use ecs_system_stats_get())
 
typedef struct ecs_sync_stats_t ecs_sync_stats_t
 Statistics for sync point.
 
typedef struct ecs_pipeline_stats_t ecs_pipeline_stats_t
 Statistics for all systems in a pipeline.
 

Functions

FLECS_API void ecs_world_stats_get (const ecs_world_t *world, ecs_world_stats_t *stats)
 Get world statistics.
 
FLECS_API void ecs_world_stats_reduce (ecs_world_stats_t *dst, const ecs_world_stats_t *src)
 Reduce source measurement window into single destination measurement.
 
FLECS_API void ecs_world_stats_reduce_last (ecs_world_stats_t *stats, const ecs_world_stats_t *old, int32_t count)
 Reduce last measurement into previous measurement, restore old value.
 
FLECS_API void ecs_world_stats_repeat_last (ecs_world_stats_t *stats)
 Repeat last measurement.
 
FLECS_API void ecs_world_stats_copy_last (ecs_world_stats_t *dst, const ecs_world_stats_t *src)
 Copy last measurement from source to destination.
 
FLECS_API void ecs_world_stats_log (const ecs_world_t *world, const ecs_world_stats_t *stats)
 
FLECS_API void ecs_query_stats_get (const ecs_world_t *world, const ecs_query_t *query, ecs_query_stats_t *stats)
 Get query statistics.
 
FLECS_API void ecs_query_cache_stats_reduce (ecs_query_stats_t *dst, const ecs_query_stats_t *src)
 Reduce source measurement window into single destination measurement.
 
FLECS_API void ecs_query_cache_stats_reduce_last (ecs_query_stats_t *stats, const ecs_query_stats_t *old, int32_t count)
 Reduce last measurement into previous measurement, restore old value.
 
FLECS_API void ecs_query_cache_stats_repeat_last (ecs_query_stats_t *stats)
 Repeat last measurement.
 
FLECS_API void ecs_query_cache_stats_copy_last (ecs_query_stats_t *dst, const ecs_query_stats_t *src)
 Copy last measurement from source to destination.
 
FLECS_API bool ecs_system_stats_get (const ecs_world_t *world, ecs_entity_t system, ecs_system_stats_t *stats)
 Get system statistics.
 
FLECS_API void ecs_system_stats_reduce (ecs_system_stats_t *dst, const ecs_system_stats_t *src)
 Reduce source measurement window into single destination measurement.
 
FLECS_API void ecs_system_stats_reduce_last (ecs_system_stats_t *stats, const ecs_system_stats_t *old, int32_t count)
 Reduce last measurement into previous measurement, restore old value.
 
FLECS_API void ecs_system_stats_repeat_last (ecs_system_stats_t *stats)
 Repeat last measurement.
 
FLECS_API void ecs_system_stats_copy_last (ecs_system_stats_t *dst, const ecs_system_stats_t *src)
 Copy last measurement from source to destination.
 
FLECS_API bool ecs_pipeline_stats_get (ecs_world_t *world, ecs_entity_t pipeline, ecs_pipeline_stats_t *stats)
 Get pipeline statistics.
 
FLECS_API void ecs_pipeline_stats_fini (ecs_pipeline_stats_t *stats)
 Free pipeline stats.
 
FLECS_API void ecs_pipeline_stats_reduce (ecs_pipeline_stats_t *dst, const ecs_pipeline_stats_t *src)
 Reduce source measurement window into single destination measurement.
 
FLECS_API void ecs_pipeline_stats_reduce_last (ecs_pipeline_stats_t *stats, const ecs_pipeline_stats_t *old, int32_t count)
 Reduce last measurement into previous measurement, restore old value.
 
FLECS_API void ecs_pipeline_stats_repeat_last (ecs_pipeline_stats_t *stats)
 Repeat last measurement.
 
FLECS_API void ecs_pipeline_stats_copy_last (ecs_pipeline_stats_t *dst, const ecs_pipeline_stats_t *src)
 Copy last measurement to destination.
 
FLECS_API void ecs_metric_reduce (ecs_metric_t *dst, const ecs_metric_t *src, int32_t t_dst, int32_t t_src)
 Reduce all measurements from a window into a single measurement.
 
FLECS_API void ecs_metric_reduce_last (ecs_metric_t *m, int32_t t, int32_t count)
 Reduce last measurement into previous measurement.
 
FLECS_API void ecs_metric_copy (ecs_metric_t *m, int32_t dst, int32_t src)
 Copy measurement.
 
FLECS_API ECS_COMPONENT_DECLARE (FlecsStats)
 Flecs stats module.
 
FLECS_API ECS_COMPONENT_DECLARE (EcsWorldStats)
 Component id for EcsWorldStats.
 
FLECS_API ECS_COMPONENT_DECLARE (EcsWorldSummary)
 Component id for EcsWorldSummary.
 
FLECS_API ECS_COMPONENT_DECLARE (EcsSystemStats)
 Component id for EcsSystemStats.
 
FLECS_API ECS_COMPONENT_DECLARE (EcsPipelineStats)
 Component id for EcsPipelineStats.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_entities_memory_t)
 Component id for ecs_entities_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_component_index_memory_t)
 Component id for ecs_component_index_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_query_memory_t)
 Component id for ecs_query_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_component_memory_t)
 Component id for ecs_component_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_table_memory_t)
 Component id for ecs_table_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_commands_memory_t)
 Component id for ecs_commands_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_table_histogram_t)
 Component id for ecs_table_histogram_t.
 
FLECS_API ECS_COMPONENT_DECLARE (ecs_allocator_memory_t)
 Component id for ecs_allocator_memory_t.
 
FLECS_API ECS_COMPONENT_DECLARE (EcsWorldMemory)
 Component id for EcsWorldMemory.
 
FLECS_API ecs_entities_memory_t ecs_entity_index_memory_get (const ecs_world_t *world)
 Memory statistics getters.
 
FLECS_API ecs_component_index_memory_t ecs_component_index_memory_get (const ecs_world_t *world)
 Get memory usage statistics for the component index.
 
FLECS_API ecs_query_memory_t ecs_query_memory_get (const ecs_world_t *world)
 Get memory usage statistics for queries.
 
FLECS_API ecs_component_memory_t ecs_component_memory_get (const ecs_world_t *world)
 Get memory usage statistics for components.
 
FLECS_API ecs_table_memory_t ecs_table_memory_get (const ecs_world_t *world)
 Get memory usage statistics for tables.
 
FLECS_API ecs_table_histogram_t ecs_table_histogram_get (const ecs_world_t *world)
 Get number of tables by number of entities in the table.
 
FLECS_API ecs_commands_memory_t ecs_commands_memory_get (const ecs_world_t *world)
 Get memory usage statistics for commands.
 
FLECS_API ecs_allocator_memory_t ecs_allocator_memory_get (const ecs_world_t *world)
 Get memory usage statistics for allocators.
 
FLECS_API void FlecsStatsImport (ecs_world_t *world)
 Stats module import function.
 

Variables

FLECS_API ecs_entity_t EcsPeriod1s
 Tag used for metrics collected in last second.
 
FLECS_API ecs_entity_t EcsPeriod1m
 Tag used for metrics collected in last minute.
 
FLECS_API ecs_entity_t EcsPeriod1h
 Tag used for metrics collected in last hour.
 
FLECS_API ecs_entity_t EcsPeriod1d
 Tag used for metrics collected in last day.
 
FLECS_API ecs_entity_t EcsPeriod1w
 Tag used for metrics collected in last week.
 

Detailed Description

Collection of statistics for world, queries, systems and pipelines.

Macro Definition Documentation

◆ ECS_STAT_WINDOW

#define ECS_STAT_WINDOW   (60)

Definition at line 40 of file stats.h.

◆ ECS_TABLE_MEMORY_HISTOGRAM_BUCKET_COUNT

#define ECS_TABLE_MEMORY_HISTOGRAM_BUCKET_COUNT   14

Table memory histogram constants.

Definition at line 530 of file stats.h.

◆ ECS_TABLE_MEMORY_HISTOGRAM_MAX_COUNT

#define ECS_TABLE_MEMORY_HISTOGRAM_MAX_COUNT   (1 << ECS_TABLE_MEMORY_HISTOGRAM_BUCKET_COUNT)

Definition at line 531 of file stats.h.

Function Documentation

◆ ecs_allocator_memory_get()

FLECS_API ecs_allocator_memory_t ecs_allocator_memory_get ( const ecs_world_t * world)

Get memory usage statistics for allocators.

Parameters
worldThe world.
Returns
Memory statistics for allocators.

◆ ecs_commands_memory_get()

FLECS_API ecs_commands_memory_t ecs_commands_memory_get ( const ecs_world_t * world)

Get memory usage statistics for commands.

Parameters
worldThe world.
Returns
Memory statistics for commands.

◆ ecs_component_index_memory_get()

FLECS_API ecs_component_index_memory_t ecs_component_index_memory_get ( const ecs_world_t * world)

Get memory usage statistics for the component index.

Parameters
worldThe world.
Returns
Memory statistics for the component index.

◆ ecs_component_memory_get()

FLECS_API ecs_component_memory_t ecs_component_memory_get ( const ecs_world_t * world)

Get memory usage statistics for components.

Parameters
worldThe world.
Returns
Memory statistics for components.

◆ ecs_entity_index_memory_get()

FLECS_API ecs_entities_memory_t ecs_entity_index_memory_get ( const ecs_world_t * world)

Memory statistics getters.

Get memory usage statistics for the entity index.

Parameters
worldThe world.
Returns
Memory statistics for the entity index.

◆ ecs_pipeline_stats_copy_last()

FLECS_API void ecs_pipeline_stats_copy_last ( ecs_pipeline_stats_t * dst,
const ecs_pipeline_stats_t * src )

Copy last measurement to destination.

This operation copies the last measurement into the destination. It does not modify the cursor.

Parameters
dstThe metrics.
srcThe metrics to copy.

◆ ecs_pipeline_stats_fini()

FLECS_API void ecs_pipeline_stats_fini ( ecs_pipeline_stats_t * stats)

Free pipeline stats.

Parameters
statsThe stats to free.

◆ ecs_pipeline_stats_get()

FLECS_API bool ecs_pipeline_stats_get ( ecs_world_t * world,
ecs_entity_t pipeline,
ecs_pipeline_stats_t * stats )

Get pipeline statistics.

Obtain statistics for the provided pipeline.

Parameters
worldThe world.
pipelineThe pipeline.
statsOut parameter for statistics.
Returns
true if success, false if not a pipeline.

◆ ecs_query_memory_get()

FLECS_API ecs_query_memory_t ecs_query_memory_get ( const ecs_world_t * world)

Get memory usage statistics for queries.

Parameters
worldThe world.
Returns
Memory statistics for queries.

◆ ecs_query_stats_get()

FLECS_API void ecs_query_stats_get ( const ecs_world_t * world,
const ecs_query_t * query,
ecs_query_stats_t * stats )

Get query statistics.

Obtain statistics for the provided query.

Parameters
worldThe world.
queryThe query.
statsOut parameter for statistics.

◆ ecs_system_stats_get()

FLECS_API bool ecs_system_stats_get ( const ecs_world_t * world,
ecs_entity_t system,
ecs_system_stats_t * stats )

Get system statistics.

Obtain statistics for the provided system.

Parameters
worldThe world.
systemThe system.
statsOut parameter for statistics.
Returns
true if success, false if not a system.

◆ ecs_table_histogram_get()

FLECS_API ecs_table_histogram_t ecs_table_histogram_get ( const ecs_world_t * world)

Get number of tables by number of entities in the table.

Parameters
worldThe world.
Returns
Number of tables by number of entities in the table.

◆ ecs_table_memory_get()

FLECS_API ecs_table_memory_t ecs_table_memory_get ( const ecs_world_t * world)

Get memory usage statistics for tables.

Parameters
worldThe world.
Returns
Memory statistics for tables.

◆ ecs_world_stats_get()

FLECS_API void ecs_world_stats_get ( const ecs_world_t * world,
ecs_world_stats_t * stats )

Get world statistics.

Parameters
worldThe world.
statsOut parameter for statistics.

◆ FlecsStatsImport()

FLECS_API void FlecsStatsImport ( ecs_world_t * world)

Stats module import function.

Usage:

ECS_IMPORT(world, FlecsStats)
#define ECS_IMPORT(world, id)
Wrapper around ecs_import().
Definition module.h:119
Parameters
worldThe world.