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...
 

Macros

#define ECS_STAT_WINDOW   (60)
 

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 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.

Function Documentation

◆ 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_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_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.