Flecs: include/flecs/addons/stats.h File Reference
Description: A fast entity component system (ECS) for C & C++

| 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...
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_misc_memory_t
| Misc 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_misc_memory_t)
| Component id for ecs_misc_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_memory_get (const ecs_world_t *world)
| Memory statistics getters.
void | ecs_component_record_memory_get (const ecs_component_record_t *cr, ecs_component_index_memory_t *result)
| Get memory usage statistics for single component record.
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 void | ecs_query_memory_get (const ecs_query_t *query, ecs_query_memory_t *result)
| Get memory usage statistics for single query.
FLECS_API ecs_query_memory_t | ecs_queries_memory_get (const ecs_world_t *world)
| Get memory usage statistics for queries.
void | ecs_table_component_memory_get (const ecs_table_t *table, ecs_component_memory_t *result)
| Get component memory for table.
FLECS_API ecs_component_memory_t | ecs_component_memory_get (const ecs_world_t *world)
| Get memory usage statistics for components.
void | ecs_table_memory_get (const ecs_table_t *table, ecs_table_memory_t *result)
| Get memory usage statistics for single table.
FLECS_API ecs_table_memory_t | ecs_tables_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_misc_memory_t | ecs_misc_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 ecs_size_t | ecs_memory_get (const ecs_world_t *world)
| Get total memory used by world.
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.