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

Statistics addon. More...

Go to the source code of this file.

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

Statistics addon.

The stats addon tracks high resolution statistics for the world, systems and pipelines. The addon can be used as an API where an application calls functions to obtain statistics directly and as a module where statistics are automatically tracked. The latter is required for statistics tracking in the explorer.

When the addon is imported as module, statistics are tracked for each frame, second, minute, hour, day and week with 60 datapoints per tier.

Definition in file stats.h.