Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reduce memory usage in component fetches and change detection filters #15283

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

ItsDoot
Copy link
Contributor

@ItsDoot ItsDoot commented Sep 18, 2024

Objective

Solution

Same as #6396, we use a compile-time checked StorageSwitch union type to select the fetch data based on the component's storage type, saving >= 8 bytes per component fetch in a given query.

Note: We forego the Query iteration change as it exists in a slightly different form now on main.

Testing

  • All current tests pass locally.

@ItsDoot ItsDoot added A-ECS Entities, components, systems, and events C-Performance A change motivated by improving speed, memory usage or compile times S-Needs-Review Needs reviewer attention (from anyone!) to move forward D-Unsafe Touches with unsafe code in some way labels Sep 18, 2024
@ItsDoot
Copy link
Contributor Author

ItsDoot commented Sep 18, 2024

Full ECS benchmark suite results (this PR on left)
group                                               fetchmemoryusage                        main
-----                                               ----------------                        ----
add_remove/sparse_set                               1.00   522.5±14.11µs        ? ?/sec     1.02   535.2±22.67µs        ? ?/sec
add_remove/table                                    1.00   684.9±44.74µs        ? ?/sec     1.01   694.1±29.81µs        ? ?/sec
add_remove_big/sparse_set                           1.09   624.0±82.72µs        ? ?/sec     1.00   570.9±18.65µs        ? ?/sec
add_remove_big/table                                1.00  1465.8±327.30µs        ? ?/sec    1.02  1490.0±346.44µs        ? ?/sec
add_remove_very_big/table                           1.00     41.6±1.92ms        ? ?/sec     1.02     42.3±1.70ms        ? ?/sec
added_archetypes/archetype_count/100                1.00     35.4±2.17µs        ? ?/sec     1.00     35.5±1.70µs        ? ?/sec
added_archetypes/archetype_count/1000               1.00   413.0±14.66µs        ? ?/sec     1.03   424.7±14.67µs        ? ?/sec
added_archetypes/archetype_count/10000              1.00      7.4±0.95ms        ? ?/sec     1.16      8.6±0.79ms        ? ?/sec
added_archetypes/archetype_count/200                1.03     70.7±4.52µs        ? ?/sec     1.00     68.6±2.79µs        ? ?/sec
added_archetypes/archetype_count/2000               1.00   873.2±35.53µs        ? ?/sec     1.01   885.2±44.41µs        ? ?/sec
added_archetypes/archetype_count/500                1.00   196.9±12.56µs        ? ?/sec     1.01    199.7±9.64µs        ? ?/sec
added_archetypes/archetype_count/5000               1.00      2.7±0.35ms        ? ?/sec     1.00      2.7±0.26ms        ? ?/sec
build_schedule/1000_schedule                        1.05       2.5±0.10s        ? ?/sec     1.00       2.4±0.04s        ? ?/sec
build_schedule/1000_schedule_noconstraints          1.00     22.9±0.59ms        ? ?/sec     1.02     23.3±0.75ms        ? ?/sec
build_schedule/100_schedule                         1.00     10.7±0.18ms        ? ?/sec     1.00     10.8±0.23ms        ? ?/sec
build_schedule/100_schedule_noconstraints           1.00   379.3±14.46µs        ? ?/sec     1.00   378.6±13.71µs        ? ?/sec
build_schedule/500_schedule                         1.00   431.7±11.93ms        ? ?/sec     1.00   433.6±11.29ms        ? ?/sec
build_schedule/500_schedule_noconstraints           1.00      6.1±0.15ms        ? ?/sec     1.00      6.1±0.15ms        ? ?/sec
busy_systems/01x_entities_03_systems                1.00     23.7±0.90µs        ? ?/sec     1.02     24.1±0.71µs        ? ?/sec
busy_systems/01x_entities_06_systems                1.00     39.3±1.37µs        ? ?/sec     1.04     40.8±1.80µs        ? ?/sec
busy_systems/01x_entities_09_systems                1.00     55.1±0.99µs        ? ?/sec     1.02     56.1±2.26µs        ? ?/sec
busy_systems/01x_entities_12_systems                1.00     69.5±1.97µs        ? ?/sec     1.00     69.7±1.39µs        ? ?/sec
busy_systems/01x_entities_15_systems                1.00     83.1±1.87µs        ? ?/sec     1.01     84.2±3.14µs        ? ?/sec
busy_systems/02x_entities_03_systems                1.00     37.0±1.43µs        ? ?/sec     1.55     57.5±1.51µs        ? ?/sec
busy_systems/02x_entities_06_systems                1.00     64.5±1.65µs        ? ?/sec     1.63    105.0±1.79µs        ? ?/sec
busy_systems/02x_entities_09_systems                1.00     90.7±2.20µs        ? ?/sec     1.66    150.6±2.83µs        ? ?/sec
busy_systems/02x_entities_12_systems                1.00    118.7±4.54µs        ? ?/sec     1.65    195.6±3.13µs        ? ?/sec
busy_systems/02x_entities_15_systems                1.00    144.2±3.04µs        ? ?/sec     1.67    241.3±4.29µs        ? ?/sec
busy_systems/03x_entities_03_systems                1.38     67.3±2.03µs        ? ?/sec     1.00     48.6±1.58µs        ? ?/sec
busy_systems/03x_entities_06_systems                1.39    122.5±2.27µs        ? ?/sec     1.00     87.9±3.18µs        ? ?/sec
busy_systems/03x_entities_09_systems                1.42    176.3±2.42µs        ? ?/sec     1.00    124.6±2.26µs        ? ?/sec
busy_systems/03x_entities_12_systems                1.42    231.4±3.20µs        ? ?/sec     1.00    162.4±2.67µs        ? ?/sec
busy_systems/03x_entities_15_systems                1.42    284.8±4.39µs        ? ?/sec     1.00    200.3±5.10µs        ? ?/sec
busy_systems/04x_entities_03_systems                1.69    102.1±2.15µs        ? ?/sec     1.00     60.6±1.19µs        ? ?/sec
busy_systems/04x_entities_06_systems                1.72    189.7±3.55µs        ? ?/sec     1.00    110.2±1.59µs        ? ?/sec
busy_systems/04x_entities_09_systems                1.74    278.0±6.33µs        ? ?/sec     1.00    160.2±2.46µs        ? ?/sec
busy_systems/04x_entities_12_systems                1.74    363.7±5.83µs        ? ?/sec     1.00    209.0±5.32µs        ? ?/sec
busy_systems/04x_entities_15_systems                1.76    454.9±9.44µs        ? ?/sec     1.00    258.4±3.94µs        ? ?/sec
busy_systems/05x_entities_03_systems                1.04     77.2±2.50µs        ? ?/sec     1.00     74.1±1.90µs        ? ?/sec
busy_systems/05x_entities_06_systems                1.04    141.8±2.17µs        ? ?/sec     1.00    136.4±4.58µs        ? ?/sec
busy_systems/05x_entities_09_systems                1.04    205.0±2.86µs        ? ?/sec     1.00    196.6±4.42µs        ? ?/sec
busy_systems/05x_entities_12_systems                1.05    266.6±3.12µs        ? ?/sec     1.00    254.5±2.79µs        ? ?/sec
busy_systems/05x_entities_15_systems                1.04    330.5±4.96µs        ? ?/sec     1.00    316.5±6.31µs        ? ?/sec
contrived/01x_entities_03_systems                   1.00     10.6±0.58µs        ? ?/sec     1.02     10.7±0.59µs        ? ?/sec
contrived/01x_entities_06_systems                   1.00     19.9±0.77µs        ? ?/sec     1.03     20.5±0.71µs        ? ?/sec
contrived/01x_entities_09_systems                   1.00     27.8±0.68µs        ? ?/sec     1.03     28.6±1.23µs        ? ?/sec
contrived/01x_entities_12_systems                   1.00     36.4±1.30µs        ? ?/sec     1.01     36.7±1.45µs        ? ?/sec
contrived/01x_entities_15_systems                   1.00     43.9±1.77µs        ? ?/sec     1.04     45.6±4.74µs        ? ?/sec
contrived/02x_entities_03_systems                   1.00     19.8±0.57µs        ? ?/sec     1.24     24.7±0.61µs        ? ?/sec
contrived/02x_entities_06_systems                   1.00     33.4±1.00µs        ? ?/sec     1.30     43.5±1.86µs        ? ?/sec
contrived/02x_entities_09_systems                   1.00     48.5±1.03µs        ? ?/sec     1.23     59.6±0.99µs        ? ?/sec
contrived/02x_entities_12_systems                   1.00     63.5±1.96µs        ? ?/sec     1.20     76.0±1.70µs        ? ?/sec
contrived/02x_entities_15_systems                   1.00     76.7±1.92µs        ? ?/sec     1.22     93.2±2.06µs        ? ?/sec
contrived/03x_entities_03_systems                   1.00     25.0±0.75µs        ? ?/sec     1.03     25.8±0.97µs        ? ?/sec
contrived/03x_entities_06_systems                   1.00     46.8±1.37µs        ? ?/sec     1.02     47.5±1.35µs        ? ?/sec
contrived/03x_entities_09_systems                   1.00     67.6±1.09µs        ? ?/sec     1.03     69.4±1.43µs        ? ?/sec
contrived/03x_entities_12_systems                   1.00     88.0±2.58µs        ? ?/sec     1.02     89.9±2.00µs        ? ?/sec
contrived/03x_entities_15_systems                   1.00    107.9±3.23µs        ? ?/sec     1.03    111.1±6.23µs        ? ?/sec
contrived/04x_entities_03_systems                   1.00     29.7±1.06µs        ? ?/sec     1.07     31.8±2.10µs        ? ?/sec
contrived/04x_entities_06_systems                   1.00     58.3±1.25µs        ? ?/sec     1.03     59.8±1.45µs        ? ?/sec
contrived/04x_entities_09_systems                   1.00     81.9±1.78µs        ? ?/sec     1.02     83.9±2.01µs        ? ?/sec
contrived/04x_entities_12_systems                   1.00    106.0±1.54µs        ? ?/sec     1.04    110.4±3.43µs        ? ?/sec
contrived/04x_entities_15_systems                   1.00    130.8±2.54µs        ? ?/sec     1.04    136.5±4.89µs        ? ?/sec
contrived/05x_entities_03_systems                   1.00     34.5±1.34µs        ? ?/sec     1.39     47.9±1.56µs        ? ?/sec
contrived/05x_entities_06_systems                   1.00     68.2±1.55µs        ? ?/sec     1.26     85.6±1.50µs        ? ?/sec
contrived/05x_entities_09_systems                   1.00     96.1±1.95µs        ? ?/sec     1.28    123.3±1.76µs        ? ?/sec
contrived/05x_entities_12_systems                   1.00    126.3±2.53µs        ? ?/sec     1.27    159.9±2.86µs        ? ?/sec
contrived/05x_entities_15_systems                   1.00    156.0±3.95µs        ? ?/sec     1.25    195.7±7.00µs        ? ?/sec
empty_commands/0_entities                           1.00      6.5±0.24ns        ? ?/sec     1.05      6.8±0.29ns        ? ?/sec
empty_systems/000_systems                           1.00      5.2±0.18ns        ? ?/sec     1.02      5.3±0.40ns        ? ?/sec
empty_systems/001_systems                           1.00  1300.3±65.36ns        ? ?/sec     1.02  1323.6±86.09ns        ? ?/sec
empty_systems/002_systems                           1.00      2.5±0.19µs        ? ?/sec     1.01      2.5±0.17µs        ? ?/sec
empty_systems/003_systems                           1.02      4.5±0.59µs        ? ?/sec     1.00      4.4±0.19µs        ? ?/sec
empty_systems/004_systems                           1.00      4.5±0.25µs        ? ?/sec     1.05      4.7±0.30µs        ? ?/sec
empty_systems/005_systems                           1.00      4.6±0.26µs        ? ?/sec     1.03      4.7±0.23µs        ? ?/sec
empty_systems/010_systems                           1.00      5.8±0.18µs        ? ?/sec     1.05      6.1±0.39µs        ? ?/sec
empty_systems/015_systems                           1.00      6.5±0.34µs        ? ?/sec     1.02      6.7±0.36µs        ? ?/sec
empty_systems/020_systems                           1.00      8.1±0.34µs        ? ?/sec     1.02      8.3±0.26µs        ? ?/sec
empty_systems/025_systems                           1.00      9.7±0.28µs        ? ?/sec     1.05     10.1±0.46µs        ? ?/sec
empty_systems/030_systems                           1.00     11.7±0.47µs        ? ?/sec     1.01     11.8±0.32µs        ? ?/sec
empty_systems/035_systems                           1.00     12.9±0.47µs        ? ?/sec     1.06     13.6±0.48µs        ? ?/sec
empty_systems/040_systems                           1.00     14.8±0.43µs        ? ?/sec     1.00     14.7±0.45µs        ? ?/sec
empty_systems/045_systems                           1.00     16.2±0.41µs        ? ?/sec     1.04     16.8±0.85µs        ? ?/sec
empty_systems/050_systems                           1.00     18.1±0.90µs        ? ?/sec     1.03     18.6±0.67µs        ? ?/sec
empty_systems/055_systems                           1.00     19.2±0.37µs        ? ?/sec     1.10     21.2±1.79µs        ? ?/sec
empty_systems/060_systems                           1.00     20.5±0.34µs        ? ?/sec     1.03     21.1±0.59µs        ? ?/sec
empty_systems/065_systems                           1.00     22.4±0.56µs        ? ?/sec     1.04     23.4±1.02µs        ? ?/sec
empty_systems/070_systems                           1.00     24.0±0.59µs        ? ?/sec     1.04     24.9±1.56µs        ? ?/sec
empty_systems/075_systems                           1.00     25.7±1.23µs        ? ?/sec     1.02     26.3±0.69µs        ? ?/sec
empty_systems/080_systems                           1.00     27.4±0.73µs        ? ?/sec     1.02     28.0±0.68µs        ? ?/sec
empty_systems/085_systems                           1.00     29.4±0.69µs        ? ?/sec     1.01     29.9±1.40µs        ? ?/sec
empty_systems/090_systems                           1.00     31.2±0.69µs        ? ?/sec     1.02     31.8±0.90µs        ? ?/sec
empty_systems/095_systems                           1.00     34.4±1.05µs        ? ?/sec     1.02     34.9±0.97µs        ? ?/sec
empty_systems/100_systems                           1.00     35.5±1.03µs        ? ?/sec     1.04     36.8±1.56µs        ? ?/sec
entity_hash/entity_set_build/100                    1.00   590.7±31.63ns 161.5 MElem/sec    1.01   595.9±19.02ns 160.0 MElem/sec
entity_hash/entity_set_build/1000                   1.00      3.8±0.48µs 251.0 MElem/sec    1.00      3.8±0.42µs 251.8 MElem/sec
entity_hash/entity_set_build/10000                  1.00     36.6±2.21µs 260.7 MElem/sec    1.04     38.2±3.63µs 249.9 MElem/sec
entity_hash/entity_set_build/316                    1.00  1457.2±36.91ns 206.8 MElem/sec    1.07  1560.0±76.80ns 193.2 MElem/sec
entity_hash/entity_set_build/3162                   1.00     11.2±0.74µs 269.1 MElem/sec    1.00     11.2±0.64µs 268.5 MElem/sec
entity_hash/entity_set_lookup_hit/100               1.00    141.8±4.18ns 672.4 MElem/sec    1.05   148.4±10.59ns 642.5 MElem/sec
entity_hash/entity_set_lookup_hit/1000              1.00  1524.8±65.84ns 625.4 MElem/sec    1.01  1543.4±127.68ns 617.9 MElem/sec
entity_hash/entity_set_lookup_hit/10000             1.00     18.1±0.64µs 527.9 MElem/sec    1.00     18.1±0.88µs 528.0 MElem/sec
entity_hash/entity_set_lookup_hit/316               1.02   498.5±19.68ns 604.5 MElem/sec    1.00   488.3±21.60ns 617.1 MElem/sec
entity_hash/entity_set_lookup_hit/3162              1.03      5.1±0.29µs 588.1 MElem/sec    1.00      5.0±0.18µs 604.6 MElem/sec
entity_hash/entity_set_lookup_miss_gen/100          1.00    224.8±4.97ns 424.2 MElem/sec    1.06   239.2±11.77ns 398.7 MElem/sec
entity_hash/entity_set_lookup_miss_gen/1000         1.00      2.2±0.12µs 425.6 MElem/sec    1.00      2.2±0.06µs 424.6 MElem/sec
entity_hash/entity_set_lookup_miss_gen/10000        1.02     27.8±1.19µs 343.6 MElem/sec    1.00     27.1±0.67µs 351.3 MElem/sec
entity_hash/entity_set_lookup_miss_gen/316          1.00   812.6±20.65ns 370.9 MElem/sec    1.02   829.6±21.20ns 363.3 MElem/sec
entity_hash/entity_set_lookup_miss_gen/3162         1.00     10.0±0.28µs 300.5 MElem/sec    1.00     10.0±0.23µs 300.9 MElem/sec
entity_hash/entity_set_lookup_miss_id/100           1.00    134.7±2.62ns 707.9 MElem/sec    1.04    140.2±6.30ns 680.0 MElem/sec
entity_hash/entity_set_lookup_miss_id/1000          1.00  1374.6±83.92ns 693.8 MElem/sec    1.05  1438.6±67.58ns 662.9 MElem/sec
entity_hash/entity_set_lookup_miss_id/10000         1.00     16.5±0.55µs 578.5 MElem/sec    1.11     18.3±1.62µs 522.3 MElem/sec
entity_hash/entity_set_lookup_miss_id/316           1.00   517.0±16.65ns 582.9 MElem/sec    1.05   545.3±18.97ns 552.7 MElem/sec
entity_hash/entity_set_lookup_miss_id/3162          1.00      7.2±0.22µs 419.4 MElem/sec    1.21      8.7±0.23µs 345.2 MElem/sec
event_propagation/four_event_types                  1.00   370.6±11.03µs        ? ?/sec     1.03   381.8±11.30µs        ? ?/sec
event_propagation/single_event_type                 1.00   513.1±29.33µs        ? ?/sec     1.01   516.3±20.70µs        ? ?/sec
event_propagation/single_event_type_no_listeners    1.00    244.0±4.93µs        ? ?/sec     1.07   261.2±46.60µs        ? ?/sec
events_iter/size_16_events_100                      1.41     75.9±4.95ns        ? ?/sec     1.00     53.8±3.90ns        ? ?/sec
events_iter/size_16_events_1000                     1.06   473.6±16.99ns        ? ?/sec     1.00   446.2±19.26ns        ? ?/sec
events_iter/size_16_events_10000                    1.00      4.4±0.12µs        ? ?/sec     1.00      4.4±0.14µs        ? ?/sec
events_iter/size_16_events_50000                    1.01     22.1±1.48µs        ? ?/sec     1.00     21.9±0.59µs        ? ?/sec
events_iter/size_4_events_100                       1.38     74.8±3.92ns        ? ?/sec     1.00     54.2±3.98ns        ? ?/sec
events_iter/size_4_events_1000                      1.05   472.5±17.30ns        ? ?/sec     1.00   448.6±20.49ns        ? ?/sec
events_iter/size_4_events_10000                     1.03      4.5±0.28µs        ? ?/sec     1.00      4.4±0.20µs        ? ?/sec
events_iter/size_4_events_50000                     1.02     22.2±1.39µs        ? ?/sec     1.00     21.9±0.68µs        ? ?/sec
events_iter/size_512_events_100                     1.00     54.1±3.10ns        ? ?/sec     1.45     78.3±6.45ns        ? ?/sec
events_iter/size_512_events_1000                    1.00    438.2±9.10ns        ? ?/sec     1.09   477.0±14.13ns        ? ?/sec
events_iter/size_512_events_10000                   1.00      4.4±0.16µs        ? ?/sec     1.04      4.6±0.22µs        ? ?/sec
events_iter/size_512_events_50000                   1.00     22.6±0.59µs        ? ?/sec     1.04     23.6±1.74µs        ? ?/sec
events_send/size_16_events_100                      1.00    109.1±6.07ns        ? ?/sec     1.14   124.6±10.93ns        ? ?/sec
events_send/size_16_events_1000                     1.00   983.7±22.44ns        ? ?/sec     1.05  1029.7±30.20ns        ? ?/sec
events_send/size_16_events_10000                    1.00      9.2±0.30µs        ? ?/sec     1.17     10.7±1.16µs        ? ?/sec
events_send/size_16_events_50000                    1.00     46.3±1.44µs        ? ?/sec     1.14     53.0±2.98µs        ? ?/sec
events_send/size_4_events_100                       1.01     95.4±5.87ns        ? ?/sec     1.00     94.8±4.08ns        ? ?/sec
events_send/size_4_events_1000                      1.00   816.7±30.54ns        ? ?/sec     1.12   911.3±36.70ns        ? ?/sec
events_send/size_4_events_10000                     1.00      8.3±0.41µs        ? ?/sec     1.13      9.3±0.37µs        ? ?/sec
events_send/size_4_events_50000                     1.00     41.7±4.21µs        ? ?/sec     1.09     45.6±1.54µs        ? ?/sec
events_send/size_512_events_100                     1.09  1349.3±40.70ns        ? ?/sec     1.00  1233.8±31.22ns        ? ?/sec
events_send/size_512_events_1000                    1.08     13.7±0.31µs        ? ?/sec     1.00     12.7±0.54µs        ? ?/sec
events_send/size_512_events_10000                   1.08    138.9±3.97µs        ? ?/sec     1.00    128.6±6.90µs        ? ?/sec
events_send/size_512_events_50000                   1.06   754.1±55.42µs        ? ?/sec     1.00   713.2±85.11µs        ? ?/sec
fake_commands/2000_commands                         1.00     10.8±0.61µs        ? ?/sec     1.01     10.9±0.63µs        ? ?/sec
fake_commands/4000_commands                         1.00     21.4±0.92µs        ? ?/sec     1.01     21.7±0.76µs        ? ?/sec
fake_commands/6000_commands                         1.00     32.0±1.01µs        ? ?/sec     1.02     32.8±2.35µs        ? ?/sec
fake_commands/8000_commands                         1.00     42.9±1.91µs        ? ?/sec     1.00     43.0±1.53µs        ? ?/sec
get_or_spawn/batched                                1.00   228.7±18.12µs        ? ?/sec     1.01   231.5±22.81µs        ? ?/sec
get_or_spawn/individual                             1.02   507.5±72.34µs        ? ?/sec     1.00   496.8±67.83µs        ? ?/sec
heavy_compute/base                                  1.00    177.4±4.42µs        ? ?/sec     1.00    177.1±6.18µs        ? ?/sec
insert_commands/insert                              1.00   364.1±44.48µs        ? ?/sec     1.00   365.5±35.60µs        ? ?/sec
insert_commands/insert_batch                        1.02   234.9±12.40µs        ? ?/sec     1.00   230.4±14.97µs        ? ?/sec
insert_simple/base                                  1.03    233.2±8.29µs        ? ?/sec     1.00    226.2±7.87µs        ? ?/sec
insert_simple/unbatched                             1.00   527.0±19.58µs        ? ?/sec     1.01   534.2±21.90µs        ? ?/sec
iter_fragmented(4096)_empty/foreach_sparse          1.00      7.1±0.24µs        ? ?/sec     1.03      7.3±0.43µs        ? ?/sec
iter_fragmented(4096)_empty/foreach_table           1.00      2.3±0.08µs        ? ?/sec     1.00      2.3±0.10µs        ? ?/sec
iter_fragmented/base                                1.00   267.8±15.07ns        ? ?/sec     1.36   363.2±22.20ns        ? ?/sec
iter_fragmented/foreach                             1.02   132.8±21.65ns        ? ?/sec     1.00   129.8±14.80ns        ? ?/sec
iter_fragmented/foreach_wide                        1.00      3.2±0.16µs        ? ?/sec     1.07      3.4±0.12µs        ? ?/sec
iter_fragmented/wide                                1.00      3.0±0.17µs        ? ?/sec     1.00      3.0±0.17µs        ? ?/sec
iter_fragmented_sparse/base                         1.07      7.0±0.87ns        ? ?/sec     1.00      6.6±0.40ns        ? ?/sec
iter_fragmented_sparse/foreach                      1.00      7.0±0.39ns        ? ?/sec     1.00      7.0±0.23ns        ? ?/sec
iter_fragmented_sparse/foreach_wide                 1.00     31.4±3.43ns        ? ?/sec     1.57     49.4±2.47ns        ? ?/sec
iter_fragmented_sparse/wide                         1.03     35.0±8.09ns        ? ?/sec     1.00     33.9±1.88ns        ? ?/sec
iter_simple/base                                    1.00      6.5±0.41µs        ? ?/sec     1.01      6.6±0.20µs        ? ?/sec
iter_simple/foreach                                 1.00      6.0±0.38µs        ? ?/sec     1.06      6.3±0.53µs        ? ?/sec
iter_simple/foreach_hybrid                          1.00      8.1±0.25µs        ? ?/sec     1.06      8.7±0.39µs        ? ?/sec
iter_simple/foreach_sparse_set                      1.02     17.2±0.59µs        ? ?/sec     1.00     16.8±0.94µs        ? ?/sec
iter_simple/foreach_wide                            1.00     28.7±1.06µs        ? ?/sec     1.03     29.7±1.48µs        ? ?/sec
iter_simple/foreach_wide_sparse_set                 1.00     89.6±2.44µs        ? ?/sec     1.29    115.8±3.33µs        ? ?/sec
iter_simple/sparse_set                              1.04     17.9±0.47µs        ? ?/sec     1.00     17.3±0.53µs        ? ?/sec
iter_simple/system                                  1.00      6.4±0.18µs        ? ?/sec     1.27      8.2±0.28µs        ? ?/sec
iter_simple/wide                                    1.00     39.3±1.58µs        ? ?/sec     1.03     40.6±2.72µs        ? ?/sec
iter_simple/wide_sparse_set                         1.00     97.7±2.36µs        ? ?/sec     1.13    110.6±3.85µs        ? ?/sec
no_archetypes/system_count/0                        1.02      8.5±0.44ns        ? ?/sec     1.00      8.3±0.22ns        ? ?/sec
no_archetypes/system_count/100                      1.03  1027.1±62.41ns        ? ?/sec     1.00   998.8±33.25ns        ? ?/sec
no_archetypes/system_count/20                       1.00    197.7±5.09ns        ? ?/sec     1.00    198.6±6.53ns        ? ?/sec
no_archetypes/system_count/40                       1.05   408.7±16.56ns        ? ?/sec     1.00   389.8±15.28ns        ? ?/sec
no_archetypes/system_count/60                       1.01   582.9±31.56ns        ? ?/sec     1.00   579.4±24.92ns        ? ?/sec
no_archetypes/system_count/80                       1.00   837.2±75.76ns        ? ?/sec     1.01   845.5±46.53ns        ? ?/sec
observe/trigger_simple                              1.00     51.2±2.38µs        ? ?/sec     1.05     53.8±2.33µs        ? ?/sec
observe/trigger_targets_simple/10000_entity         1.00   756.3±68.48µs        ? ?/sec     1.05   791.7±78.93µs        ? ?/sec
par_iter_simple/hybrid                              1.00     58.3±2.52µs        ? ?/sec     1.03     60.2±9.06µs        ? ?/sec
par_iter_simple/with_0_fragment                     1.00     29.5±2.30µs        ? ?/sec     1.00     29.5±1.48µs        ? ?/sec
par_iter_simple/with_1000_fragment                  1.00     34.8±2.44µs        ? ?/sec     1.04     36.0±1.87µs        ? ?/sec
par_iter_simple/with_100_fragment                   1.00     28.3±2.17µs        ? ?/sec     1.04     29.4±1.51µs        ? ?/sec
par_iter_simple/with_10_fragment                    1.00     29.2±1.58µs        ? ?/sec     1.01     29.4±1.32µs        ? ?/sec
query_get/50000_entities_sparse                     1.00    211.5±6.30µs        ? ?/sec     1.02    214.9±7.14µs        ? ?/sec
query_get/50000_entities_table                      1.00   192.4±11.11µs        ? ?/sec     1.03   197.8±10.73µs        ? ?/sec
query_get_many_10/50000_calls_sparse                1.00  1816.1±235.79µs        ? ?/sec    1.06  1929.0±331.96µs        ? ?/sec
query_get_many_10/50000_calls_table                 1.00  1868.3±127.12µs        ? ?/sec    1.02  1911.9±135.63µs        ? ?/sec
query_get_many_2/50000_calls_sparse                 1.00   389.0±45.46µs        ? ?/sec     1.04   402.7±48.53µs        ? ?/sec
query_get_many_2/50000_calls_table                  1.00   439.7±62.58µs        ? ?/sec     1.03   453.3±66.63µs        ? ?/sec
query_get_many_5/50000_calls_sparse                 1.00   912.4±98.49µs        ? ?/sec     1.04  946.4±122.60µs        ? ?/sec
query_get_many_5/50000_calls_table                  1.00  1059.4±97.88µs        ? ?/sec     1.03  1091.8±109.33µs        ? ?/sec
run_condition/no/001_systems                        1.00     98.1±4.08ns        ? ?/sec     1.00     97.7±4.78ns        ? ?/sec
run_condition/no/006_systems                        1.00   325.3±10.73ns        ? ?/sec     1.01   328.2±19.54ns        ? ?/sec
run_condition/no/011_systems                        1.00   562.6±17.65ns        ? ?/sec     1.00   565.3±28.97ns        ? ?/sec
run_condition/no/016_systems                        1.00   790.8±35.52ns        ? ?/sec     1.02   807.0±43.21ns        ? ?/sec
run_condition/no/021_systems                        1.00  1037.2±33.90ns        ? ?/sec     1.00  1036.2±62.98ns        ? ?/sec
run_condition/no/026_systems                        1.00  1281.3±51.36ns        ? ?/sec     1.01  1287.9±74.26ns        ? ?/sec
run_condition/no/031_systems                        1.00  1515.4±76.17ns        ? ?/sec     1.02  1550.0±69.73ns        ? ?/sec
run_condition/no/036_systems                        1.00  1806.6±66.80ns        ? ?/sec     1.00  1798.2±108.82ns        ? ?/sec
run_condition/no/041_systems                        1.00      2.1±0.15µs        ? ?/sec     1.02      2.1±0.26µs        ? ?/sec
run_condition/no/046_systems                        1.00      2.2±0.08µs        ? ?/sec     1.02      2.3±0.11µs        ? ?/sec
run_condition/no/051_systems                        1.00      2.5±0.17µs        ? ?/sec     1.01      2.5±0.12µs        ? ?/sec
run_condition/no/056_systems                        1.00      2.7±0.08µs        ? ?/sec     1.00      2.7±0.11µs        ? ?/sec
run_condition/no/061_systems                        1.00      3.0±0.09µs        ? ?/sec     1.01      3.0±0.12µs        ? ?/sec
run_condition/no/066_systems                        1.05      3.4±0.16µs        ? ?/sec     1.00      3.2±0.13µs        ? ?/sec
run_condition/no/071_systems                        1.00      3.5±0.45µs        ? ?/sec     1.00      3.5±0.16µs        ? ?/sec
run_condition/no/076_systems                        1.00      3.7±0.22µs        ? ?/sec     1.01      3.8±0.23µs        ? ?/sec
run_condition/no/081_systems                        1.00      4.0±0.19µs        ? ?/sec     1.01      4.0±0.29µs        ? ?/sec
run_condition/no/086_systems                        1.00      4.2±0.14µs        ? ?/sec     1.01      4.2±0.24µs        ? ?/sec
run_condition/no/091_systems                        1.00      4.5±0.18µs        ? ?/sec     1.02      4.5±0.35µs        ? ?/sec
run_condition/no/096_systems                        1.00      4.6±0.14µs        ? ?/sec     1.01      4.7±0.23µs        ? ?/sec
run_condition/no/101_systems                        1.00      4.9±0.33µs        ? ?/sec     1.00      4.9±0.26µs        ? ?/sec
run_condition/yes/001_systems                       1.00  1518.5±69.35ns        ? ?/sec     1.01  1535.8±116.00ns        ? ?/sec
run_condition/yes/006_systems                       1.00      5.1±0.30µs        ? ?/sec     1.06      5.5±0.32µs        ? ?/sec
run_condition/yes/011_systems                       1.00      5.9±0.32µs        ? ?/sec     1.01      6.0±0.21µs        ? ?/sec
run_condition/yes/016_systems                       1.00      6.7±0.23µs        ? ?/sec     1.05      7.0±0.38µs        ? ?/sec
run_condition/yes/021_systems                       1.00      8.2±0.26µs        ? ?/sec     1.02      8.4±0.22µs        ? ?/sec
run_condition/yes/026_systems                       1.00     10.5±1.08µs        ? ?/sec     1.00     10.4±0.31µs        ? ?/sec
run_condition/yes/031_systems                       1.00     12.0±0.45µs        ? ?/sec     1.01     12.1±0.46µs        ? ?/sec
run_condition/yes/036_systems                       1.00     13.2±0.36µs        ? ?/sec     1.02     13.5±0.41µs        ? ?/sec
run_condition/yes/041_systems                       1.00     14.7±0.37µs        ? ?/sec     1.05     15.4±0.85µs        ? ?/sec
run_condition/yes/046_systems                       1.00     16.4±0.51µs        ? ?/sec     1.01     16.6±0.42µs        ? ?/sec
run_condition/yes/051_systems                       1.00     18.4±0.69µs        ? ?/sec     1.00     18.3±0.60µs        ? ?/sec
run_condition/yes/056_systems                       1.00     19.3±0.66µs        ? ?/sec     1.02     19.7±1.05µs        ? ?/sec
run_condition/yes/061_systems                       1.00     20.8±0.59µs        ? ?/sec     1.03     21.5±0.68µs        ? ?/sec
run_condition/yes/066_systems                       1.00     22.5±0.66µs        ? ?/sec     1.04     23.4±1.15µs        ? ?/sec
run_condition/yes/071_systems                       1.00     25.0±0.88µs        ? ?/sec     1.00     24.9±0.87µs        ? ?/sec
run_condition/yes/076_systems                       1.00     26.0±0.88µs        ? ?/sec     1.03     26.8±0.98µs        ? ?/sec
run_condition/yes/081_systems                       1.00     28.3±1.61µs        ? ?/sec     1.01     28.7±0.88µs        ? ?/sec
run_condition/yes/086_systems                       1.00     30.0±0.74µs        ? ?/sec     1.03     30.8±2.38µs        ? ?/sec
run_condition/yes/091_systems                       1.00     31.8±0.78µs        ? ?/sec     1.02     32.4±1.04µs        ? ?/sec
run_condition/yes/096_systems                       1.00     34.9±0.95µs        ? ?/sec     1.07     37.3±2.47µs        ? ?/sec
run_condition/yes/101_systems                       1.00     35.9±0.93µs        ? ?/sec     1.04     37.3±2.19µs        ? ?/sec
run_condition/yes_using_query/001_systems           1.00  1515.3±107.07ns        ? ?/sec    1.12  1689.9±97.37ns        ? ?/sec
run_condition/yes_using_query/006_systems           1.00      5.1±0.26µs        ? ?/sec     1.07      5.5±0.50µs        ? ?/sec
run_condition/yes_using_query/011_systems           1.00      5.9±0.22µs        ? ?/sec     1.04      6.1±0.24µs        ? ?/sec
run_condition/yes_using_query/016_systems           1.00      6.6±0.26µs        ? ?/sec     1.03      6.8±0.31µs        ? ?/sec
run_condition/yes_using_query/021_systems           1.00      8.3±0.36µs        ? ?/sec     1.04      8.7±0.34µs        ? ?/sec
run_condition/yes_using_query/026_systems           1.00     10.1±0.37µs        ? ?/sec     1.02     10.3±0.29µs        ? ?/sec
run_condition/yes_using_query/031_systems           1.00     11.9±0.42µs        ? ?/sec     1.01     12.0±0.30µs        ? ?/sec
run_condition/yes_using_query/036_systems           1.00     13.0±0.31µs        ? ?/sec     1.03     13.4±0.39µs        ? ?/sec
run_condition/yes_using_query/041_systems           1.00     15.0±0.79µs        ? ?/sec     1.00     14.9±0.44µs        ? ?/sec
run_condition/yes_using_query/046_systems           1.01     16.7±0.56µs        ? ?/sec     1.00     16.6±0.42µs        ? ?/sec
run_condition/yes_using_query/051_systems           1.00     18.6±0.67µs        ? ?/sec     1.00     18.5±0.44µs        ? ?/sec
run_condition/yes_using_query/056_systems           1.00     19.2±0.69µs        ? ?/sec     1.02     19.6±0.53µs        ? ?/sec
run_condition/yes_using_query/061_systems           1.00     20.7±0.62µs        ? ?/sec     1.02     21.2±0.76µs        ? ?/sec
run_condition/yes_using_query/066_systems           1.00     22.4±0.63µs        ? ?/sec     1.06     23.7±1.16µs        ? ?/sec
run_condition/yes_using_query/071_systems           1.00     24.4±0.69µs        ? ?/sec     1.03     25.2±1.04µs        ? ?/sec
run_condition/yes_using_query/076_systems           1.00     26.4±0.92µs        ? ?/sec     1.02     27.0±1.49µs        ? ?/sec
run_condition/yes_using_query/081_systems           1.00     28.0±0.94µs        ? ?/sec     1.00     27.9±0.75µs        ? ?/sec
run_condition/yes_using_query/086_systems           1.00     30.1±0.71µs        ? ?/sec     1.00     30.1±0.97µs        ? ?/sec
run_condition/yes_using_query/091_systems           1.00     32.0±0.85µs        ? ?/sec     1.04     33.3±2.15µs        ? ?/sec
run_condition/yes_using_query/096_systems           1.00     35.4±1.31µs        ? ?/sec     1.02     36.1±1.23µs        ? ?/sec
run_condition/yes_using_query/101_systems           1.00     36.4±0.90µs        ? ?/sec     1.04     37.8±4.43µs        ? ?/sec
run_condition/yes_using_resource/001_systems        1.11  1613.7±60.69ns        ? ?/sec     1.00  1450.0±102.12ns        ? ?/sec
run_condition/yes_using_resource/006_systems        1.00      5.2±0.54µs        ? ?/sec     1.05      5.4±0.33µs        ? ?/sec
run_condition/yes_using_resource/011_systems        1.00      5.8±0.30µs        ? ?/sec     1.06      6.2±0.50µs        ? ?/sec
run_condition/yes_using_resource/016_systems        1.01      6.9±0.47µs        ? ?/sec     1.00      6.9±0.33µs        ? ?/sec
run_condition/yes_using_resource/021_systems        1.00      8.3±0.35µs        ? ?/sec     1.02      8.5±0.29µs        ? ?/sec
run_condition/yes_using_resource/026_systems        1.00     10.2±0.41µs        ? ?/sec     1.02     10.4±0.46µs        ? ?/sec
run_condition/yes_using_resource/031_systems        1.00     11.8±0.34µs        ? ?/sec     1.02     12.1±0.38µs        ? ?/sec
run_condition/yes_using_resource/036_systems        1.00     13.1±0.34µs        ? ?/sec     1.03     13.5±0.65µs        ? ?/sec
run_condition/yes_using_resource/041_systems        1.00     14.9±0.55µs        ? ?/sec     1.03     15.3±0.64µs        ? ?/sec
run_condition/yes_using_resource/046_systems        1.00     16.3±0.48µs        ? ?/sec     1.02     16.6±0.47µs        ? ?/sec
run_condition/yes_using_resource/051_systems        1.00     18.5±0.86µs        ? ?/sec     1.01     18.6±0.72µs        ? ?/sec
run_condition/yes_using_resource/056_systems        1.00     18.9±0.36µs        ? ?/sec     1.04     19.7±0.92µs        ? ?/sec
run_condition/yes_using_resource/061_systems        1.00     20.7±0.50µs        ? ?/sec     1.02     21.1±0.58µs        ? ?/sec
run_condition/yes_using_resource/066_systems        1.00     22.5±0.85µs        ? ?/sec     1.05     23.5±1.16µs        ? ?/sec
run_condition/yes_using_resource/071_systems        1.00     24.3±0.79µs        ? ?/sec     1.02     24.7±0.82µs        ? ?/sec
run_condition/yes_using_resource/076_systems        1.00     26.3±1.33µs        ? ?/sec     1.00     26.4±0.88µs        ? ?/sec
run_condition/yes_using_resource/081_systems        1.00     27.8±0.86µs        ? ?/sec     1.00     27.9±0.91µs        ? ?/sec
run_condition/yes_using_resource/086_systems        1.00     30.0±1.20µs        ? ?/sec     1.02     30.4±1.09µs        ? ?/sec
run_condition/yes_using_resource/091_systems        1.00     31.7±0.78µs        ? ?/sec     1.03     32.7±1.59µs        ? ?/sec
run_condition/yes_using_resource/096_systems        1.00     35.0±1.11µs        ? ?/sec     1.03     35.9±1.14µs        ? ?/sec
run_condition/yes_using_resource/101_systems        1.00     35.9±0.85µs        ? ?/sec     1.03     37.1±1.21µs        ? ?/sec
run_empty_schedule/MultiThreaded                    1.02      5.3±0.19ns        ? ?/sec     1.00      5.2±0.17ns        ? ?/sec
run_empty_schedule/Simple                           1.00      4.9±0.12ns        ? ?/sec     1.00      4.9±0.16ns        ? ?/sec
run_empty_schedule/SingleThreaded                   1.00      8.2±0.21ns        ? ?/sec     1.01      8.3±0.26ns        ? ?/sec
schedule/base                                       1.00     22.5±1.02µs        ? ?/sec     1.03     23.1±1.78µs        ? ?/sec
sized_commands_0_bytes/2000_commands                1.00      9.6±0.20µs        ? ?/sec     1.00      9.7±0.44µs        ? ?/sec
sized_commands_0_bytes/4000_commands                1.00     19.2±0.59µs        ? ?/sec     1.01     19.4±0.86µs        ? ?/sec
sized_commands_0_bytes/6000_commands                1.00     28.9±1.52µs        ? ?/sec     1.01     29.2±1.69µs        ? ?/sec
sized_commands_0_bytes/8000_commands                1.01     39.0±2.47µs        ? ?/sec     1.00     38.5±1.59µs        ? ?/sec
sized_commands_12_bytes/2000_commands               1.01     11.8±0.59µs        ? ?/sec     1.00     11.8±0.40µs        ? ?/sec
sized_commands_12_bytes/4000_commands               1.00     23.4±0.63µs        ? ?/sec     1.01     23.6±0.96µs        ? ?/sec
sized_commands_12_bytes/6000_commands               1.00     35.2±1.04µs        ? ?/sec     1.03     36.3±2.07µs        ? ?/sec
sized_commands_12_bytes/8000_commands               1.00     46.9±2.57µs        ? ?/sec     1.02     48.0±3.15µs        ? ?/sec
sized_commands_512_bytes/2000_commands              1.00     54.9±3.09µs        ? ?/sec     1.00     55.0±2.48µs        ? ?/sec
sized_commands_512_bytes/4000_commands              1.00    110.5±8.48µs        ? ?/sec     1.01    111.6±8.68µs        ? ?/sec
sized_commands_512_bytes/6000_commands              1.00   169.5±19.02µs        ? ?/sec     1.03   174.5±16.91µs        ? ?/sec
sized_commands_512_bytes/8000_commands              1.00   228.2±24.57µs        ? ?/sec     1.02   231.9±29.54µs        ? ?/sec
spawn_commands/2000_entities                        1.00    130.2±7.37µs        ? ?/sec     1.04    134.9±9.51µs        ? ?/sec
spawn_commands/4000_entities                        1.00   262.3±16.12µs        ? ?/sec     1.04   273.5±32.46µs        ? ?/sec
spawn_commands/6000_entities                        1.00   391.9±20.37µs        ? ?/sec     1.02   401.5±29.56µs        ? ?/sec
spawn_commands/8000_entities                        1.00   535.8±29.21µs        ? ?/sec     1.04   559.9±52.18µs        ? ?/sec
spawn_world/10000_entities                          1.02   667.7±65.46µs        ? ?/sec     1.00   655.0±52.98µs        ? ?/sec
spawn_world/1000_entities                           1.05     70.2±7.74µs        ? ?/sec     1.00     66.9±7.17µs        ? ?/sec
spawn_world/100_entities                            1.00      6.4±0.66µs        ? ?/sec     1.04      6.7±0.75µs        ? ?/sec
spawn_world/10_entities                             1.00   626.1±64.99ns        ? ?/sec     1.07   668.1±69.87ns        ? ?/sec
spawn_world/1_entities                              1.00     64.3±7.26ns        ? ?/sec     1.07     68.9±8.56ns        ? ?/sec
world_entity/50000_entities                         1.00     80.3±2.13µs        ? ?/sec     1.00     80.6±1.97µs        ? ?/sec
world_get/50000_entities_sparse                     1.00    145.0±8.91µs        ? ?/sec     1.02    147.5±6.65µs        ? ?/sec
world_get/50000_entities_table                      1.00    107.0±3.80µs        ? ?/sec     1.05    111.9±8.39µs        ? ?/sec
world_query_for_each/50000_entities_sparse          1.00     43.6±1.27µs        ? ?/sec     1.02     44.4±2.00µs        ? ?/sec
world_query_for_each/50000_entities_table           1.00     21.4±0.66µs        ? ?/sec     1.03     22.0±0.73µs        ? ?/sec
world_query_get/50000_entities_sparse               1.00    154.7±4.60µs        ? ?/sec     1.03    158.8±7.32µs        ? ?/sec
world_query_get/50000_entities_sparse_wide          1.00    174.8±5.56µs        ? ?/sec     1.02    178.7±9.41µs        ? ?/sec
world_query_get/50000_entities_table                1.00    139.1±4.70µs        ? ?/sec     1.02    141.5±7.39µs        ? ?/sec
world_query_get/50000_entities_table_wide           1.00    137.3±5.61µs        ? ?/sec     1.03    140.7±5.91µs        ? ?/sec
world_query_iter/50000_entities_table               1.00     22.7±0.81µs        ? ?/sec     1.02     23.1±1.01µs        ? ?/sec
world_query_iter/50000_entities_sparse              1.00     49.3±1.28µs        ? ?/sec     1.02     50.1±3.30µs        ? ?/sec

@alice-i-cecile
Copy link
Member

Code changes seem reasonable, but those benchmark results are super weird. Why would only some of the busy_systems benchmarks have a 40%+ slowdown? Can you rerun them and post the results?

@ItsDoot
Copy link
Contributor Author

ItsDoot commented Sep 19, 2024

@alice-i-cecile Reran on a different machine:

Full ECS suite benchmarks (this PR on left)
group                                               fetchmemoryusage                        main
-----                                               ----------------                        ----
add_remove/sparse_set                               1.00   489.9±17.31µs        ? ?/sec     1.00   488.1±15.10µs        ? ?/sec
add_remove/table                                    1.02   625.1±17.30µs        ? ?/sec     1.00   613.4±11.23µs        ? ?/sec
add_remove_big/sparse_set                           1.01   489.9±15.04µs        ? ?/sec     1.00   484.2±13.95µs        ? ?/sec
add_remove_big/table                                1.01  1557.7±218.60µs        ? ?/sec    1.00  1546.5±284.80µs        ? ?/sec
add_remove_very_big/table                           1.03     30.8±2.64ms        ? ?/sec     1.00     30.0±2.48ms        ? ?/sec
added_archetypes/archetype_count/100                1.00     36.9±2.16µs        ? ?/sec     1.05     38.8±2.87µs        ? ?/sec
added_archetypes/archetype_count/1000               1.00    361.6±6.49µs        ? ?/sec     1.05   378.4±10.40µs        ? ?/sec
added_archetypes/archetype_count/10000              1.00      5.3±0.31ms        ? ?/sec     1.07      5.7±0.49ms        ? ?/sec
added_archetypes/archetype_count/200                1.00     69.4±6.22µs        ? ?/sec     1.04     72.0±2.37µs        ? ?/sec
added_archetypes/archetype_count/2000               1.00   783.7±17.70µs        ? ?/sec     1.06   829.8±22.84µs        ? ?/sec
added_archetypes/archetype_count/500                1.00    170.7±2.78µs        ? ?/sec     1.05    179.1±8.09µs        ? ?/sec
added_archetypes/archetype_count/5000               1.00      2.2±0.12ms        ? ?/sec     1.06      2.3±0.09ms        ? ?/sec
build_schedule/1000_schedule                        1.00       2.2±0.02s        ? ?/sec     1.00       2.2±0.02s        ? ?/sec
build_schedule/1000_schedule_noconstraints          1.03     26.4±1.10ms        ? ?/sec     1.00     25.7±0.69ms        ? ?/sec
build_schedule/100_schedule                         1.00      9.6±0.11ms        ? ?/sec     1.02      9.8±0.13ms        ? ?/sec
build_schedule/100_schedule_noconstraints           1.00    467.2±7.11µs        ? ?/sec     1.05    492.2±9.55µs        ? ?/sec
build_schedule/500_schedule                         1.00    360.3±9.71ms        ? ?/sec     1.02    365.8±7.28ms        ? ?/sec
build_schedule/500_schedule_noconstraints           1.06      7.3±0.20ms        ? ?/sec     1.00      6.9±0.19ms        ? ?/sec
busy_systems/01x_entities_03_systems                1.16     44.0±4.17µs        ? ?/sec     1.00     37.8±1.30µs        ? ?/sec
busy_systems/01x_entities_06_systems                1.63    87.1±11.54µs        ? ?/sec     1.00     53.5±1.94µs        ? ?/sec
busy_systems/01x_entities_09_systems                1.17    105.1±4.47µs        ? ?/sec     1.00     89.6±4.15µs        ? ?/sec
busy_systems/01x_entities_12_systems                1.24    137.0±9.01µs        ? ?/sec     1.00    110.1±1.82µs        ? ?/sec
busy_systems/01x_entities_15_systems                1.16    164.1±9.20µs        ? ?/sec     1.00   141.0±10.94µs        ? ?/sec
busy_systems/02x_entities_03_systems                1.01     62.0±3.21µs        ? ?/sec     1.00     61.2±4.05µs        ? ?/sec
busy_systems/02x_entities_06_systems                1.00     98.4±7.45µs        ? ?/sec     1.09    107.3±9.81µs        ? ?/sec
busy_systems/02x_entities_09_systems                1.00    158.6±4.91µs        ? ?/sec     1.07    169.0±8.55µs        ? ?/sec
busy_systems/02x_entities_12_systems                1.00    201.3±3.47µs        ? ?/sec     1.08    216.8±8.06µs        ? ?/sec
busy_systems/02x_entities_15_systems                1.00    248.3±3.33µs        ? ?/sec     1.07   266.6±15.86µs        ? ?/sec
busy_systems/03x_entities_03_systems                1.02     89.5±2.42µs        ? ?/sec     1.00     88.2±3.68µs        ? ?/sec
busy_systems/03x_entities_06_systems                1.00   159.1±10.27µs        ? ?/sec     1.04   165.1±17.75µs        ? ?/sec
busy_systems/03x_entities_09_systems                1.06   252.6±20.72µs        ? ?/sec     1.00   239.0±14.89µs        ? ?/sec
busy_systems/03x_entities_12_systems                1.03    317.6±8.91µs        ? ?/sec     1.00   307.0±13.52µs        ? ?/sec
busy_systems/03x_entities_15_systems                1.01   405.2±11.48µs        ? ?/sec     1.00   399.7±16.30µs        ? ?/sec
busy_systems/04x_entities_03_systems                1.03    113.1±5.38µs        ? ?/sec     1.00    109.9±7.47µs        ? ?/sec
busy_systems/04x_entities_06_systems                1.02   219.9±16.47µs        ? ?/sec     1.00   216.2±19.77µs        ? ?/sec
busy_systems/04x_entities_09_systems                1.00   313.1±10.81µs        ? ?/sec     1.01   317.0±20.78µs        ? ?/sec
busy_systems/04x_entities_12_systems                1.08   460.8±40.35µs        ? ?/sec     1.00   424.8±16.89µs        ? ?/sec
busy_systems/04x_entities_15_systems                1.03   542.5±25.18µs        ? ?/sec     1.00   527.4±32.97µs        ? ?/sec
busy_systems/05x_entities_03_systems                1.05   155.6±25.35µs        ? ?/sec     1.00    147.7±7.02µs        ? ?/sec
busy_systems/05x_entities_06_systems                1.00   281.0±28.39µs        ? ?/sec     1.14   319.5±36.99µs        ? ?/sec
busy_systems/05x_entities_09_systems                1.00   431.3±33.10µs        ? ?/sec     1.02   441.8±25.75µs        ? ?/sec
busy_systems/05x_entities_12_systems                1.00   549.3±27.48µs        ? ?/sec     1.05   578.4±22.00µs        ? ?/sec
busy_systems/05x_entities_15_systems                1.00   713.0±60.04µs        ? ?/sec     1.05   745.4±48.06µs        ? ?/sec
contrived/01x_entities_03_systems                   1.00     18.9±1.68µs        ? ?/sec     1.03     19.4±1.27µs        ? ?/sec
contrived/01x_entities_06_systems                   1.00     36.3±2.11µs        ? ?/sec     1.00     36.2±1.70µs        ? ?/sec
contrived/01x_entities_09_systems                   1.01     59.6±3.33µs        ? ?/sec     1.00     59.2±2.64µs        ? ?/sec
contrived/01x_entities_12_systems                   1.00     75.6±1.86µs        ? ?/sec     1.05     79.2±4.85µs        ? ?/sec
contrived/01x_entities_15_systems                   1.00     91.3±3.95µs        ? ?/sec     1.05     96.0±2.75µs        ? ?/sec
contrived/02x_entities_03_systems                   1.00     31.3±3.31µs        ? ?/sec     1.01     31.5±2.51µs        ? ?/sec
contrived/02x_entities_06_systems                   1.00     57.9±2.56µs        ? ?/sec     1.06     61.4±2.33µs        ? ?/sec
contrived/02x_entities_09_systems                   1.00     83.0±5.64µs        ? ?/sec     1.04     86.2±2.79µs        ? ?/sec
contrived/02x_entities_12_systems                   1.00    113.2±5.43µs        ? ?/sec     1.02    115.2±5.04µs        ? ?/sec
contrived/02x_entities_15_systems                   1.00    136.9±6.03µs        ? ?/sec     1.05    143.7±7.94µs        ? ?/sec
contrived/03x_entities_03_systems                   1.00     40.7±3.21µs        ? ?/sec     1.21     49.1±4.50µs        ? ?/sec
contrived/03x_entities_06_systems                   1.00     77.1±1.66µs        ? ?/sec     1.08     83.2±4.52µs        ? ?/sec
contrived/03x_entities_09_systems                   1.00    110.7±1.71µs        ? ?/sec     1.06    117.6±4.18µs        ? ?/sec
contrived/03x_entities_12_systems                   1.00    150.7±6.33µs        ? ?/sec     1.04    157.0±5.94µs        ? ?/sec
contrived/03x_entities_15_systems                   1.00    185.9±9.08µs        ? ?/sec     1.04    193.9±7.24µs        ? ?/sec
contrived/04x_entities_03_systems                   1.00     50.7±2.32µs        ? ?/sec     1.09     55.4±5.10µs        ? ?/sec
contrived/04x_entities_06_systems                   1.00     99.2±3.45µs        ? ?/sec     1.03    102.4±3.43µs        ? ?/sec
contrived/04x_entities_09_systems                   1.00    138.8±4.65µs        ? ?/sec     1.10    152.1±6.68µs        ? ?/sec
contrived/04x_entities_12_systems                   1.00    186.2±9.13µs        ? ?/sec     1.08   200.9±10.21µs        ? ?/sec
contrived/04x_entities_15_systems                   1.00    227.2±6.58µs        ? ?/sec     1.12   254.4±15.97µs        ? ?/sec
contrived/05x_entities_03_systems                   1.00     60.9±6.22µs        ? ?/sec     1.19     72.3±6.94µs        ? ?/sec
contrived/05x_entities_06_systems                   1.00    113.9±3.34µs        ? ?/sec     1.08    122.7±8.02µs        ? ?/sec
contrived/05x_entities_09_systems                   1.00    161.0±6.96µs        ? ?/sec     1.11    178.7±5.32µs        ? ?/sec
contrived/05x_entities_12_systems                   1.00    214.0±5.55µs        ? ?/sec     1.15   245.3±17.93µs        ? ?/sec
contrived/05x_entities_15_systems                   1.00   265.1±10.05µs        ? ?/sec     1.13   298.9±17.28µs        ? ?/sec
empty_commands/0_entities                           1.10      4.8±0.07ns        ? ?/sec     1.00      4.3±0.07ns        ? ?/sec
empty_systems/000_systems                           1.00      3.2±0.06ns        ? ?/sec     1.00      3.2±0.06ns        ? ?/sec
empty_systems/001_systems                           1.01  1768.6±70.00ns        ? ?/sec     1.00  1746.2±66.92ns        ? ?/sec
empty_systems/002_systems                           1.01      2.7±0.12µs        ? ?/sec     1.00      2.7±0.07µs        ? ?/sec
empty_systems/003_systems                           1.00      3.6±0.12µs        ? ?/sec     1.02      3.6±0.13µs        ? ?/sec
empty_systems/004_systems                           1.00      4.1±0.14µs        ? ?/sec     1.00      4.1±0.21µs        ? ?/sec
empty_systems/005_systems                           1.04      5.1±0.21µs        ? ?/sec     1.00      5.0±0.15µs        ? ?/sec
empty_systems/010_systems                           1.03      8.7±0.39µs        ? ?/sec     1.00      8.5±0.17µs        ? ?/sec
empty_systems/015_systems                           1.04     12.5±0.34µs        ? ?/sec     1.00     12.0±0.16µs        ? ?/sec
empty_systems/020_systems                           1.01     17.3±0.63µs        ? ?/sec     1.00     17.0±0.31µs        ? ?/sec
empty_systems/025_systems                           1.01     21.5±0.80µs        ? ?/sec     1.00     21.2±0.58µs        ? ?/sec
empty_systems/030_systems                           1.01     25.4±0.63µs        ? ?/sec     1.00     25.3±0.37µs        ? ?/sec
empty_systems/035_systems                           1.00     28.5±0.73µs        ? ?/sec     1.01     28.9±0.62µs        ? ?/sec
empty_systems/040_systems                           1.00     32.7±0.75µs        ? ?/sec     1.02     33.2±0.61µs        ? ?/sec
empty_systems/045_systems                           1.00     36.8±0.88µs        ? ?/sec     1.01     37.3±0.75µs        ? ?/sec
empty_systems/050_systems                           1.00     42.6±1.07µs        ? ?/sec     1.01     43.2±0.84µs        ? ?/sec
empty_systems/055_systems                           1.03     47.6±1.62µs        ? ?/sec     1.00     46.0±0.84µs        ? ?/sec
empty_systems/060_systems                           1.00     49.7±1.15µs        ? ?/sec     1.01     50.4±1.06µs        ? ?/sec
empty_systems/065_systems                           1.00     53.6±1.30µs        ? ?/sec     1.02     54.6±0.80µs        ? ?/sec
empty_systems/070_systems                           1.01     59.5±1.57µs        ? ?/sec     1.00     58.8±1.06µs        ? ?/sec
empty_systems/075_systems                           1.00     61.5±3.30µs        ? ?/sec     1.03     63.2±1.19µs        ? ?/sec
empty_systems/080_systems                           1.00     66.4±1.76µs        ? ?/sec     1.01     67.0±1.66µs        ? ?/sec
empty_systems/085_systems                           1.00     71.6±1.14µs        ? ?/sec     1.00     71.9±2.01µs        ? ?/sec
empty_systems/090_systems                           1.00     75.7±1.20µs        ? ?/sec     1.00     75.4±1.57µs        ? ?/sec
empty_systems/095_systems                           1.00     81.5±1.31µs        ? ?/sec     1.01     82.2±1.85µs        ? ?/sec
empty_systems/100_systems                           1.00     83.7±4.33µs        ? ?/sec     1.00     83.8±2.44µs        ? ?/sec
entity_hash/entity_set_build/100                    1.00   548.2±11.79ns 174.0 MElem/sec    1.01   554.9±30.38ns 171.9 MElem/sec
entity_hash/entity_set_build/1000                   1.00      3.6±0.62µs 262.0 MElem/sec    1.01      3.7±0.31µs 258.8 MElem/sec
entity_hash/entity_set_build/10000                  1.08     42.5±4.37µs 224.6 MElem/sec    1.00     39.4±5.63µs 241.9 MElem/sec
entity_hash/entity_set_build/316                    1.01  1635.2±53.63ns 184.3 MElem/sec    1.00  1620.6±71.40ns 186.0 MElem/sec
entity_hash/entity_set_build/3162                   1.00     10.4±0.64µs 289.8 MElem/sec    1.08     11.2±1.01µs 268.3 MElem/sec
entity_hash/entity_set_lookup_hit/100               1.02    148.9±4.75ns 640.4 MElem/sec    1.00    146.6±4.54ns 650.6 MElem/sec
entity_hash/entity_set_lookup_hit/1000              1.01  1538.8±23.21ns 619.7 MElem/sec    1.00  1530.0±17.36ns 623.3 MElem/sec
entity_hash/entity_set_lookup_hit/10000             1.00     17.2±0.54µs 553.6 MElem/sec    1.04     17.9±0.59µs 533.3 MElem/sec
entity_hash/entity_set_lookup_hit/316               1.01    468.2±8.63ns 643.7 MElem/sec    1.00    462.7±7.16ns 651.3 MElem/sec
entity_hash/entity_set_lookup_hit/3162              1.00      4.9±0.09µs 609.4 MElem/sec    1.02      5.1±0.08µs 596.0 MElem/sec
entity_hash/entity_set_lookup_miss_gen/100          1.00    229.1±2.48ns 416.3 MElem/sec    1.02    232.7±5.88ns 409.8 MElem/sec
entity_hash/entity_set_lookup_miss_gen/1000         1.00      2.3±0.04µs 418.9 MElem/sec    1.00      2.3±0.05µs 417.6 MElem/sec
entity_hash/entity_set_lookup_miss_gen/10000        1.00     52.4±2.08µs 182.2 MElem/sec    1.25     65.5±1.95µs 145.6 MElem/sec
entity_hash/entity_set_lookup_miss_gen/316          1.00   808.3±16.50ns 372.8 MElem/sec    1.03   829.3±15.81ns 363.4 MElem/sec
entity_hash/entity_set_lookup_miss_gen/3162         1.00     11.5±1.46µs 262.4 MElem/sec    1.87     21.4±0.69µs 140.7 MElem/sec
entity_hash/entity_set_lookup_miss_id/100           1.00    134.3±1.86ns 710.0 MElem/sec    1.08    145.0±2.73ns 657.7 MElem/sec
entity_hash/entity_set_lookup_miss_id/1000          1.00  1329.5±17.18ns 717.3 MElem/sec    1.01  1345.3±26.92ns 708.9 MElem/sec
entity_hash/entity_set_lookup_miss_id/10000         1.24     48.0±2.49µs 198.7 MElem/sec    1.00     38.7±1.94µs 246.7 MElem/sec
entity_hash/entity_set_lookup_miss_id/316           1.00   500.0±11.12ns 602.7 MElem/sec    1.16   579.3±11.70ns 520.2 MElem/sec
entity_hash/entity_set_lookup_miss_id/3162          1.00      7.2±0.20µs 420.9 MElem/sec    1.29      9.3±0.23µs 325.5 MElem/sec
event_propagation/four_event_types                  1.01    366.9±7.22µs        ? ?/sec     1.00   364.6±11.45µs        ? ?/sec
event_propagation/single_event_type                 1.02    446.2±9.93µs        ? ?/sec     1.00   435.6±36.39µs        ? ?/sec
event_propagation/single_event_type_no_listeners    1.00    305.7±4.56µs        ? ?/sec     1.01    307.6±4.61µs        ? ?/sec
events_iter/size_16_events_100                      1.00     49.9±0.63ns        ? ?/sec     1.02     51.1±0.79ns        ? ?/sec
events_iter/size_16_events_1000                     1.04    412.8±3.52ns        ? ?/sec     1.00    396.2±6.56ns        ? ?/sec
events_iter/size_16_events_10000                    1.05      4.0±0.08µs        ? ?/sec     1.00      3.9±0.07µs        ? ?/sec
events_iter/size_16_events_50000                    1.03     20.2±0.26µs        ? ?/sec     1.00     19.6±0.41µs        ? ?/sec
events_iter/size_4_events_100                       1.00     49.9±0.56ns        ? ?/sec     1.03     51.2±1.01ns        ? ?/sec
events_iter/size_4_events_1000                      1.04    412.9±3.61ns        ? ?/sec     1.00    395.5±8.41ns        ? ?/sec
events_iter/size_4_events_10000                     1.05      4.0±0.04µs        ? ?/sec     1.00      3.9±0.06µs        ? ?/sec
events_iter/size_4_events_50000                     1.04     20.2±0.19µs        ? ?/sec     1.00     19.5±0.39µs        ? ?/sec
events_iter/size_512_events_100                     1.00     46.6±0.75ns        ? ?/sec     1.04     48.6±1.07ns        ? ?/sec
events_iter/size_512_events_1000                    1.00    374.6±4.09ns        ? ?/sec     1.08    403.1±8.53ns        ? ?/sec
events_iter/size_512_events_10000                   1.00      3.6±0.05µs        ? ?/sec     1.10      4.0±0.13µs        ? ?/sec
events_iter/size_512_events_50000                   1.00     18.1±0.22µs        ? ?/sec     1.07     19.4±0.41µs        ? ?/sec
events_send/size_16_events_100                      1.00   124.8±62.42ns        ? ?/sec     1.09   136.0±89.97ns        ? ?/sec
events_send/size_16_events_1000                     1.00    846.7±6.63ns        ? ?/sec     1.07   904.0±18.70ns        ? ?/sec
events_send/size_16_events_10000                    1.00     13.9±1.23µs        ? ?/sec     1.10     15.3±2.12µs        ? ?/sec
events_send/size_16_events_50000                    1.00    76.3±11.11µs        ? ?/sec     1.30    99.1±18.40µs        ? ?/sec
events_send/size_4_events_100                       1.00     71.5±4.55ns        ? ?/sec     1.01     72.4±0.96ns        ? ?/sec
events_send/size_4_events_1000                      1.02   701.5±24.17ns        ? ?/sec     1.00   687.6±11.53ns        ? ?/sec
events_send/size_4_events_10000                     1.00     10.4±0.79µs        ? ?/sec     1.12     11.6±1.54µs        ? ?/sec
events_send/size_4_events_50000                     1.00     51.5±1.98µs        ? ?/sec     1.13     58.0±6.89µs        ? ?/sec
events_send/size_512_events_100                     1.00  1342.8±13.90ns        ? ?/sec     1.05  1412.9±36.17ns        ? ?/sec
events_send/size_512_events_1000                    1.00     13.4±0.14µs        ? ?/sec     1.05     14.1±0.21µs        ? ?/sec
events_send/size_512_events_10000                   1.00   168.8±12.93µs        ? ?/sec     1.03   174.3±10.75µs        ? ?/sec
events_send/size_512_events_50000                   1.04  1442.4±194.05µs        ? ?/sec    1.00  1383.1±147.08µs        ? ?/sec
fake_commands/2000_commands                         1.08      9.1±0.31µs        ? ?/sec     1.00      8.4±0.15µs        ? ?/sec
fake_commands/4000_commands                         1.06     18.4±0.33µs        ? ?/sec     1.00     17.4±0.39µs        ? ?/sec
fake_commands/6000_commands                         1.09     29.6±1.38µs        ? ?/sec     1.00     27.2±1.28µs        ? ?/sec
fake_commands/8000_commands                         1.06     39.0±1.65µs        ? ?/sec     1.00     36.7±1.64µs        ? ?/sec
get_or_spawn/batched                                1.01   230.1±18.44µs        ? ?/sec     1.00   226.9±17.81µs        ? ?/sec
get_or_spawn/individual                             1.04   479.2±55.58µs        ? ?/sec     1.00   460.6±47.97µs        ? ?/sec
heavy_compute/base                                  1.06    209.2±5.45µs        ? ?/sec     1.00    198.2±4.38µs        ? ?/sec
insert_commands/insert                              1.00   355.9±27.98µs        ? ?/sec     1.03   365.8±32.58µs        ? ?/sec
insert_commands/insert_batch                        1.00   195.9±18.73µs        ? ?/sec     1.11   218.3±14.30µs        ? ?/sec
insert_simple/base                                  1.01   228.0±11.47µs        ? ?/sec     1.00   226.6±12.99µs        ? ?/sec
insert_simple/unbatched                             1.01    509.2±7.70µs        ? ?/sec     1.00    502.6±9.38µs        ? ?/sec
iter_fragmented(4096)_empty/foreach_sparse          1.14      4.8±0.05µs        ? ?/sec     1.00      4.2±0.08µs        ? ?/sec
iter_fragmented(4096)_empty/foreach_table           1.01      2.2±0.03µs        ? ?/sec     1.00      2.1±0.03µs        ? ?/sec
iter_fragmented/base                                1.00   276.9±13.25ns        ? ?/sec     1.02   281.9±15.51ns        ? ?/sec
iter_fragmented/foreach                             1.04   137.1±29.16ns        ? ?/sec     1.00   131.4±24.30ns        ? ?/sec
iter_fragmented/foreach_wide                        1.00      4.3±0.26µs        ? ?/sec     1.15      4.9±0.30µs        ? ?/sec
iter_fragmented/wide                                1.00      4.2±0.14µs        ? ?/sec     1.04      4.4±0.33µs        ? ?/sec
iter_fragmented_sparse/base                         1.00      6.1±0.05ns        ? ?/sec     1.00      6.1±0.14ns        ? ?/sec
iter_fragmented_sparse/foreach                      1.00      6.5±0.06ns        ? ?/sec     1.01      6.6±0.25ns        ? ?/sec
iter_fragmented_sparse/foreach_wide                 1.43     41.0±0.70ns        ? ?/sec     1.00     28.6±1.00ns        ? ?/sec
iter_fragmented_sparse/wide                         1.01     30.8±1.12ns        ? ?/sec     1.00     30.6±0.85ns        ? ?/sec
iter_simple/base                                    1.00      7.8±0.09µs        ? ?/sec     1.02      8.0±0.19µs        ? ?/sec
iter_simple/foreach                                 1.00      7.8±0.15µs        ? ?/sec     1.02      8.0±0.24µs        ? ?/sec
iter_simple/foreach_hybrid                          1.00      8.5±0.11µs        ? ?/sec     1.01      8.5±0.20µs        ? ?/sec
iter_simple/foreach_sparse_set                      1.00     13.0±0.45µs        ? ?/sec     1.06     13.8±0.76µs        ? ?/sec
iter_simple/foreach_wide                            1.02     31.8±1.34µs        ? ?/sec     1.00     31.1±1.04µs        ? ?/sec
iter_simple/foreach_wide_sparse_set                 1.00     76.7±3.86µs        ? ?/sec     1.03     79.0±2.41µs        ? ?/sec
iter_simple/sparse_set                              1.00     13.4±0.44µs        ? ?/sec     1.07     14.3±0.95µs        ? ?/sec
iter_simple/system                                  1.01      8.0±0.10µs        ? ?/sec     1.00      7.9±0.22µs        ? ?/sec
iter_simple/wide                                    1.08     37.0±4.32µs        ? ?/sec     1.00     34.2±0.90µs        ? ?/sec
iter_simple/wide_sparse_set                         1.00     81.0±1.38µs        ? ?/sec     1.01     82.0±2.03µs        ? ?/sec
no_archetypes/system_count/0                        1.00      6.6±0.09ns        ? ?/sec     1.01      6.7±0.12ns        ? ?/sec
no_archetypes/system_count/100                      1.02  1096.5±35.12ns        ? ?/sec     1.00  1074.6±26.86ns        ? ?/sec
no_archetypes/system_count/20                       1.03    218.3±1.69ns        ? ?/sec     1.00    212.0±4.00ns        ? ?/sec
no_archetypes/system_count/40                       1.07    439.3±4.98ns        ? ?/sec     1.00    408.9±9.97ns        ? ?/sec
no_archetypes/system_count/60                       1.09    670.9±6.76ns        ? ?/sec     1.00   615.8±12.93ns        ? ?/sec
no_archetypes/system_count/80                       1.02   884.6±19.76ns        ? ?/sec     1.00   869.9±13.87ns        ? ?/sec
observe/trigger_simple                              1.00     40.9±0.53µs        ? ?/sec     1.00     40.9±0.60µs        ? ?/sec
observe/trigger_targets_simple/10000_entity         1.00   735.8±38.33µs        ? ?/sec     1.08  794.4±137.44µs        ? ?/sec
par_iter_simple/hybrid                              1.08     38.2±4.71µs        ? ?/sec     1.00     35.4±8.27µs        ? ?/sec
par_iter_simple/with_0_fragment                     1.11     30.1±2.82µs        ? ?/sec     1.00     27.1±2.57µs        ? ?/sec
par_iter_simple/with_1000_fragment                  1.21     41.0±4.88µs        ? ?/sec     1.00     34.0±4.29µs        ? ?/sec
par_iter_simple/with_100_fragment                   1.19     33.0±2.36µs        ? ?/sec     1.00     27.9±2.47µs        ? ?/sec
par_iter_simple/with_10_fragment                    1.10     30.1±2.96µs        ? ?/sec     1.00     27.5±2.21µs        ? ?/sec
query_get/50000_entities_sparse                     1.01    157.8±3.72µs        ? ?/sec     1.00    155.5±6.86µs        ? ?/sec
query_get/50000_entities_table                      1.00    155.3±4.13µs        ? ?/sec     1.00    156.1±4.67µs        ? ?/sec
query_get_many_10/50000_calls_sparse                1.00      2.2±0.21ms        ? ?/sec     1.01      2.2±0.17ms        ? ?/sec
query_get_many_10/50000_calls_table                 1.01      2.1±0.20ms        ? ?/sec     1.00      2.1±0.18ms        ? ?/sec
query_get_many_2/50000_calls_sparse                 1.00   365.4±19.82µs        ? ?/sec     1.02   371.3±34.18µs        ? ?/sec
query_get_many_2/50000_calls_table                  1.00   353.9±23.62µs        ? ?/sec     1.03   363.8±30.98µs        ? ?/sec
query_get_many_5/50000_calls_sparse                 1.01   892.6±45.75µs        ? ?/sec     1.00   882.4±60.56µs        ? ?/sec
query_get_many_5/50000_calls_table                  1.01   915.7±41.86µs        ? ?/sec     1.00   907.4±34.87µs        ? ?/sec
run_condition/no/001_systems                        1.00     96.8±2.79ns        ? ?/sec     1.02     98.6±2.30ns        ? ?/sec
run_condition/no/006_systems                        1.00    308.4±5.38ns        ? ?/sec     1.03    319.1±6.44ns        ? ?/sec
run_condition/no/011_systems                        1.00    512.7±8.24ns        ? ?/sec     1.03   527.9±11.88ns        ? ?/sec
run_condition/no/016_systems                        1.00    716.5±9.84ns        ? ?/sec     1.03   734.8±13.85ns        ? ?/sec
run_condition/no/021_systems                        1.00   916.4±18.00ns        ? ?/sec     1.03   941.4±17.89ns        ? ?/sec
run_condition/no/026_systems                        1.00  1126.6±25.31ns        ? ?/sec     1.01  1142.3±21.73ns        ? ?/sec
run_condition/no/031_systems                        1.00  1320.5±25.33ns        ? ?/sec     1.02  1352.4±31.85ns        ? ?/sec
run_condition/no/036_systems                        1.00  1523.2±27.20ns        ? ?/sec     1.02  1555.9±18.12ns        ? ?/sec
run_condition/no/041_systems                        1.00  1721.8±29.00ns        ? ?/sec     1.02  1760.2±51.66ns        ? ?/sec
run_condition/no/046_systems                        1.00  1929.7±29.27ns        ? ?/sec     1.02  1966.5±32.59ns        ? ?/sec
run_condition/no/051_systems                        1.00      2.1±0.03µs        ? ?/sec     1.02      2.2±0.02µs        ? ?/sec
run_condition/no/056_systems                        1.00      2.3±0.04µs        ? ?/sec     1.03      2.4±0.05µs        ? ?/sec
run_condition/no/061_systems                        1.00      2.5±0.05µs        ? ?/sec     1.02      2.6±0.05µs        ? ?/sec
run_condition/no/066_systems                        1.00      2.7±0.05µs        ? ?/sec     1.03      2.8±0.05µs        ? ?/sec
run_condition/no/071_systems                        1.00      2.9±0.05µs        ? ?/sec     1.03      3.0±0.07µs        ? ?/sec
run_condition/no/076_systems                        1.00      3.1±0.04µs        ? ?/sec     1.03      3.2±0.08µs        ? ?/sec
run_condition/no/081_systems                        1.00      3.3±0.05µs        ? ?/sec     1.04      3.4±0.07µs        ? ?/sec
run_condition/no/086_systems                        1.00      3.5±0.07µs        ? ?/sec     1.03      3.6±0.08µs        ? ?/sec
run_condition/no/091_systems                        1.00      3.7±0.06µs        ? ?/sec     1.04      3.9±0.09µs        ? ?/sec
run_condition/no/096_systems                        1.00      3.9±0.07µs        ? ?/sec     1.04      4.1±0.10µs        ? ?/sec
run_condition/no/101_systems                        1.00      4.1±0.05µs        ? ?/sec     1.05      4.3±0.16µs        ? ?/sec
run_condition/yes/001_systems                       1.00  1807.2±59.21ns        ? ?/sec     1.01  1830.1±91.35ns        ? ?/sec
run_condition/yes/006_systems                       1.04      6.0±0.42µs        ? ?/sec     1.00      5.8±0.24µs        ? ?/sec
run_condition/yes/011_systems                       1.03      9.4±0.31µs        ? ?/sec     1.00      9.1±0.26µs        ? ?/sec
run_condition/yes/016_systems                       1.01     13.2±0.54µs        ? ?/sec     1.00     13.0±0.40µs        ? ?/sec
run_condition/yes/021_systems                       1.03     18.3±0.36µs        ? ?/sec     1.00     17.7±0.41µs        ? ?/sec
run_condition/yes/026_systems                       1.04     22.7±0.93µs        ? ?/sec     1.00     22.0±0.56µs        ? ?/sec
run_condition/yes/031_systems                       1.00     26.4±0.70µs        ? ?/sec     1.00     26.4±1.15µs        ? ?/sec
run_condition/yes/036_systems                       1.05     31.0±0.80µs        ? ?/sec     1.00     29.6±0.65µs        ? ?/sec
run_condition/yes/041_systems                       1.04     35.5±0.66µs        ? ?/sec     1.00     34.2±0.55µs        ? ?/sec
run_condition/yes/046_systems                       1.02     38.8±0.78µs        ? ?/sec     1.00     37.9±0.73µs        ? ?/sec
run_condition/yes/051_systems                       1.00     43.0±0.94µs        ? ?/sec     1.00     43.2±1.07µs        ? ?/sec
run_condition/yes/056_systems                       1.04     47.6±0.93µs        ? ?/sec     1.00     45.9±1.27µs        ? ?/sec
run_condition/yes/061_systems                       1.01     51.4±0.86µs        ? ?/sec     1.00     50.7±1.17µs        ? ?/sec
run_condition/yes/066_systems                       1.01     55.6±0.90µs        ? ?/sec     1.00     55.2±1.04µs        ? ?/sec
run_condition/yes/071_systems                       1.00     59.4±1.01µs        ? ?/sec     1.00     59.1±1.48µs        ? ?/sec
run_condition/yes/076_systems                       1.01     64.0±1.62µs        ? ?/sec     1.00     63.5±0.95µs        ? ?/sec
run_condition/yes/081_systems                       1.02     68.7±1.50µs        ? ?/sec     1.00     67.4±1.07µs        ? ?/sec
run_condition/yes/086_systems                       1.01     72.4±2.13µs        ? ?/sec     1.00     71.5±1.62µs        ? ?/sec
run_condition/yes/091_systems                       1.01     76.8±1.16µs        ? ?/sec     1.00     76.1±1.85µs        ? ?/sec
run_condition/yes/096_systems                       1.02     82.9±1.36µs        ? ?/sec     1.00     81.4±2.11µs        ? ?/sec
run_condition/yes/101_systems                       1.01     84.4±3.79µs        ? ?/sec     1.00     83.7±1.57µs        ? ?/sec
run_condition/yes_using_query/001_systems           1.00  1737.9±88.65ns        ? ?/sec     1.04  1800.0±180.70ns        ? ?/sec
run_condition/yes_using_query/006_systems           1.00      5.7±0.18µs        ? ?/sec     1.01      5.8±0.20µs        ? ?/sec
run_condition/yes_using_query/011_systems           1.03     10.0±0.39µs        ? ?/sec     1.00      9.7±0.28µs        ? ?/sec
run_condition/yes_using_query/016_systems           1.04     13.4±0.59µs        ? ?/sec     1.00     12.8±0.20µs        ? ?/sec
run_condition/yes_using_query/021_systems           1.00     17.7±0.54µs        ? ?/sec     1.00     17.6±0.20µs        ? ?/sec
run_condition/yes_using_query/026_systems           1.00     22.0±0.53µs        ? ?/sec     1.01     22.3±0.62µs        ? ?/sec
run_condition/yes_using_query/031_systems           1.03     27.0±0.59µs        ? ?/sec     1.00     26.2±0.52µs        ? ?/sec
run_condition/yes_using_query/036_systems           1.07     31.3±0.81µs        ? ?/sec     1.00     29.3±0.55µs        ? ?/sec
run_condition/yes_using_query/041_systems           1.02     34.9±0.84µs        ? ?/sec     1.00     34.2±0.71µs        ? ?/sec
run_condition/yes_using_query/046_systems           1.00     36.9±1.03µs        ? ?/sec     1.03     37.9±0.64µs        ? ?/sec
run_condition/yes_using_query/051_systems           1.02     44.2±0.72µs        ? ?/sec     1.00     43.4±0.94µs        ? ?/sec
run_condition/yes_using_query/056_systems           1.02     47.0±1.55µs        ? ?/sec     1.00     46.2±0.96µs        ? ?/sec
run_condition/yes_using_query/061_systems           1.01     51.0±0.78µs        ? ?/sec     1.00     50.6±0.76µs        ? ?/sec
run_condition/yes_using_query/066_systems           1.00     55.3±1.12µs        ? ?/sec     1.00     55.1±0.83µs        ? ?/sec
run_condition/yes_using_query/071_systems           1.01     59.5±0.89µs        ? ?/sec     1.00     58.9±1.00µs        ? ?/sec
run_condition/yes_using_query/076_systems           1.01     64.0±1.24µs        ? ?/sec     1.00     63.2±1.30µs        ? ?/sec
run_condition/yes_using_query/081_systems           1.02     67.6±1.82µs        ? ?/sec     1.00     66.3±1.48µs        ? ?/sec
run_condition/yes_using_query/086_systems           1.03     72.3±1.30µs        ? ?/sec     1.00     70.2±2.27µs        ? ?/sec
run_condition/yes_using_query/091_systems           1.01     76.0±1.32µs        ? ?/sec     1.00     75.4±1.45µs        ? ?/sec
run_condition/yes_using_query/096_systems           1.00     80.8±2.04µs        ? ?/sec     1.02     82.0±1.08µs        ? ?/sec
run_condition/yes_using_query/101_systems           1.02     84.6±2.40µs        ? ?/sec     1.00     83.3±1.69µs        ? ?/sec
run_condition/yes_using_resource/001_systems        1.00  1770.4±64.27ns        ? ?/sec     1.02  1806.7±74.47ns        ? ?/sec
run_condition/yes_using_resource/006_systems        1.04      5.9±0.29µs        ? ?/sec     1.00      5.7±0.19µs        ? ?/sec
run_condition/yes_using_resource/011_systems        1.03     10.0±0.38µs        ? ?/sec     1.00      9.7±0.17µs        ? ?/sec
run_condition/yes_using_resource/016_systems        1.00     12.9±0.33µs        ? ?/sec     1.00     12.9±0.22µs        ? ?/sec
run_condition/yes_using_resource/021_systems        1.01     17.9±0.77µs        ? ?/sec     1.00     17.7±0.47µs        ? ?/sec
run_condition/yes_using_resource/026_systems        1.00     22.1±1.19µs        ? ?/sec     1.00     22.0±0.44µs        ? ?/sec
run_condition/yes_using_resource/031_systems        1.00     26.0±0.68µs        ? ?/sec     1.00     26.0±0.52µs        ? ?/sec
run_condition/yes_using_resource/036_systems        1.04     30.4±0.58µs        ? ?/sec     1.00     29.3±0.59µs        ? ?/sec
run_condition/yes_using_resource/041_systems        1.01     34.0±1.06µs        ? ?/sec     1.00     33.8±0.52µs        ? ?/sec
run_condition/yes_using_resource/046_systems        1.00     37.6±1.03µs        ? ?/sec     1.01     38.0±0.82µs        ? ?/sec
run_condition/yes_using_resource/051_systems        1.00     43.4±1.44µs        ? ?/sec     1.01     43.7±0.72µs        ? ?/sec
run_condition/yes_using_resource/056_systems        1.00     45.8±1.43µs        ? ?/sec     1.02     46.5±0.62µs        ? ?/sec
run_condition/yes_using_resource/061_systems        1.00     49.8±1.06µs        ? ?/sec     1.02     50.7±0.69µs        ? ?/sec
run_condition/yes_using_resource/066_systems        1.00     54.0±0.77µs        ? ?/sec     1.01     54.8±0.81µs        ? ?/sec
run_condition/yes_using_resource/071_systems        1.00     58.3±1.65µs        ? ?/sec     1.01     58.9±1.75µs        ? ?/sec
run_condition/yes_using_resource/076_systems        1.00     62.4±2.73µs        ? ?/sec     1.02     63.4±1.10µs        ? ?/sec
run_condition/yes_using_resource/081_systems        1.00     65.9±1.59µs        ? ?/sec     1.02     67.1±1.25µs        ? ?/sec
run_condition/yes_using_resource/086_systems        1.00     69.7±1.36µs        ? ?/sec     1.03     72.1±1.45µs        ? ?/sec
run_condition/yes_using_resource/091_systems        1.00     73.6±1.31µs        ? ?/sec     1.03     75.8±1.53µs        ? ?/sec
run_condition/yes_using_resource/096_systems        1.00     79.6±1.42µs        ? ?/sec     1.03     82.0±1.86µs        ? ?/sec
run_condition/yes_using_resource/101_systems        1.01     84.4±2.64µs        ? ?/sec     1.00     83.6±1.90µs        ? ?/sec
run_empty_schedule/MultiThreaded                    1.06      3.4±0.08ns        ? ?/sec     1.00      3.2±0.07ns        ? ?/sec
run_empty_schedule/Simple                           1.00      3.9±0.06ns        ? ?/sec     1.00      3.9±0.08ns        ? ?/sec
run_empty_schedule/SingleThreaded                   1.00      6.7±0.15ns        ? ?/sec     1.00      6.7±0.10ns        ? ?/sec
schedule/base                                       1.00     26.8±1.40µs        ? ?/sec     1.01     27.1±1.93µs        ? ?/sec
sized_commands_0_bytes/2000_commands                1.00      7.8±0.17µs        ? ?/sec     1.00      7.8±0.16µs        ? ?/sec
sized_commands_0_bytes/4000_commands                1.00     15.6±0.34µs        ? ?/sec     1.00     15.5±0.33µs        ? ?/sec
sized_commands_0_bytes/6000_commands                1.01     23.9±0.50µs        ? ?/sec     1.00     23.7±0.46µs        ? ?/sec
sized_commands_0_bytes/8000_commands                1.01     33.3±1.06µs        ? ?/sec     1.00     32.9±0.98µs        ? ?/sec
sized_commands_12_bytes/2000_commands               1.01      9.3±0.34µs        ? ?/sec     1.00      9.2±0.22µs        ? ?/sec
sized_commands_12_bytes/4000_commands               1.00     20.8±1.08µs        ? ?/sec     1.04     21.7±1.30µs        ? ?/sec
sized_commands_12_bytes/6000_commands               1.00     31.2±1.49µs        ? ?/sec     1.02     31.8±1.45µs        ? ?/sec
sized_commands_12_bytes/8000_commands               1.00     41.5±2.21µs        ? ?/sec     1.01     42.0±1.97µs        ? ?/sec
sized_commands_512_bytes/2000_commands              1.00     44.8±2.04µs        ? ?/sec     1.02     45.5±2.08µs        ? ?/sec
sized_commands_512_bytes/4000_commands              1.00    95.8±12.73µs        ? ?/sec     1.02    97.3±11.69µs        ? ?/sec
sized_commands_512_bytes/6000_commands              1.08   186.1±48.01µs        ? ?/sec     1.00   172.5±32.22µs        ? ?/sec
sized_commands_512_bytes/8000_commands              1.05   243.7±55.74µs        ? ?/sec     1.00   232.4±51.38µs        ? ?/sec
spawn_commands/2000_entities                        1.01    118.9±9.02µs        ? ?/sec     1.00    117.5±6.86µs        ? ?/sec
spawn_commands/4000_entities                        1.00   238.3±14.48µs        ? ?/sec     1.00   238.1±14.46µs        ? ?/sec
spawn_commands/6000_entities                        1.00   358.0±22.13µs        ? ?/sec     1.00   358.7±21.81µs        ? ?/sec
spawn_commands/8000_entities                        1.01   483.3±19.73µs        ? ?/sec     1.00   480.5±26.13µs        ? ?/sec
spawn_world/10000_entities                          1.00   666.3±75.25µs        ? ?/sec     1.01   671.4±72.43µs        ? ?/sec
spawn_world/1000_entities                           1.02    70.2±10.68µs        ? ?/sec     1.00     69.1±9.14µs        ? ?/sec
spawn_world/100_entities                            1.02      6.9±0.87µs        ? ?/sec     1.00      6.8±0.89µs        ? ?/sec
spawn_world/10_entities                             1.03   666.8±82.85ns        ? ?/sec     1.00   648.3±75.23ns        ? ?/sec
spawn_world/1_entities                              1.01    70.0±10.07ns        ? ?/sec     1.00     69.2±8.72ns        ? ?/sec
world_entity/50000_entities                         1.00     64.0±3.75µs        ? ?/sec     1.00     64.2±4.29µs        ? ?/sec
world_get/50000_entities_sparse                     1.00    121.3±5.57µs        ? ?/sec     1.04    126.6±6.67µs        ? ?/sec
world_get/50000_entities_table                      1.00     99.9±2.49µs        ? ?/sec     1.06    105.6±5.46µs        ? ?/sec
world_query_for_each/50000_entities_sparse          1.00     37.0±0.58µs        ? ?/sec     1.04     38.6±1.55µs        ? ?/sec
world_query_for_each/50000_entities_table           1.01     14.4±0.37µs        ? ?/sec     1.00     14.3±0.25µs        ? ?/sec
world_query_get/50000_entities_sparse               1.00    125.6±2.11µs        ? ?/sec     1.00    125.2±2.28µs        ? ?/sec
world_query_get/50000_entities_sparse_wide          1.01    139.0±3.21µs        ? ?/sec     1.00    137.5±1.55µs        ? ?/sec
world_query_get/50000_entities_table                1.00    115.2±2.45µs        ? ?/sec     1.00    115.2±2.04µs        ? ?/sec
world_query_get/50000_entities_table_wide           1.00    104.7±2.28µs        ? ?/sec     1.08    112.9±2.02µs        ? ?/sec
world_query_iter/50000_entities_sparse              1.09     44.8±4.64µs        ? ?/sec     1.00     41.1±3.11µs        ? ?/sec
world_query_iter/50000_entities_table               1.00     22.8±0.27µs        ? ?/sec     1.00     22.7±0.53µs        ? ?/sec

@alice-i-cecile
Copy link
Member

Okay, thanks :) I'm happy to call the benchmarks largely noise. Reducing memory usage has its own value though, so I'm in favor.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ECS Entities, components, systems, and events C-Performance A change motivated by improving speed, memory usage or compile times D-Unsafe Touches with unsafe code in some way S-Needs-Review Needs reviewer attention (from anyone!) to move forward
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants