Skip to content

Define Relation at World Construction#627

Merged
ameligrana merged 20 commits into
mainfrom
rel2
May 19, 2026
Merged

Define Relation at World Construction#627
ameligrana merged 20 commits into
mainfrom
rel2

Conversation

@ameligrana
Copy link
Copy Markdown
Member

@ameligrana ameligrana commented May 7, 2026

A possible way forward for #626

@ameligrana ameligrana added enhancement New feature or request breaking-change Breaking changes labels May 7, 2026
@codecov
Copy link
Copy Markdown

codecov Bot commented May 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 7, 2026

🚀 5 benchmark improvements detected!

⚠️ 2 benchmark regressions detected!

Click to expand benchmark results

Time is per entity/N, allocations are totals. Allocations are only shown for current.

N       Time main             Time curr           Factor         Allocs         Bytes    
query_create
1000 5.88ns 5.88ns 1.00 0 0
query_create_filter
1000 5.92ns 5.94ns 1.00 0 0
query_posvel_1k_arch
100 7.15ns 7.31ns 1.02 0 0
1000 10.98ns 11.43ns 1.04 0 0
10000 2.71ns 2.79ns 1.03 0 0
100000 1.07ns 1.07ns 0.99 0 0
1000000 0.89ns 0.85ns 0.96 0 0
query_posvel_1k_arch_cached
100 8.13ns 8.22ns 1.01 0 0
1000 12.96ns 12.70ns 0.98 0 0
10000 2.92ns 3.00ns 1.03 0 0
100000 1.16ns 1.14ns 0.99 0 0
1000000 0.88ns 0.85ns 0.97 0 0
query_posvel_32_arch
100 2.17ns 2.17ns 1.00 0 0
1000 0.69ns 0.70ns 1.01 0 0
10000 0.48ns 0.48ns 1.00 0 0
100000 0.63ns 0.62ns 0.97 0 0
1000000 0.69ns 0.66ns 0.95 0 0
query_posvel_cold
100 0.81ns 0.80ns 1.02 0 0
1000 0.40ns 0.39ns 0.97 0 0
10000 0.40ns 0.40ns 1.01 0 0
100000 0.67ns 0.67ns 1.00 0 0
1000000 0.90ns 1.01ns ⚠️ 1.12 0 0
query_posvel_fields
100 0.40ns 0.39ns 0.98 0 0
1000 0.24ns 0.23ns 0.97 0 0
10000 0.32ns 0.32ns 1.00 0 0
100000 0.50ns 0.45ns 0.92 0 0
1000000 0.65ns 0.61ns 0.93 0 0
query_posvel_fields_broadcast
100 0.91ns 0.90ns 0.99 0 0
1000 0.71ns 0.71ns 1.00 0 0
10000 0.78ns 0.78ns 1.00 0 0
100000 1.00ns 0.93ns 0.94 0 0
1000000 1.58ns 1.71ns 1.09 0 0
query_posvel_hot
100 0.42ns 0.42ns 1.00 0 0
1000 0.24ns 0.24ns 1.00 0 0
10000 0.33ns 0.33ns 1.00 0 0
100000 0.51ns 0.46ns 0.92 0 0
1000000 0.67ns 0.68ns 1.02 0 0
query_posvel_soa
100 1.44ns 1.44ns 1.00 0 0
1000 1.29ns 1.31ns 1.02 0 0
10000 1.36ns 1.36ns 1.00 0 0
100000 1.38ns 1.38ns 1.00 0 0
1000000 1.40ns 1.66ns ⚠️ 1.18 0 0
query_posvel_soa_unpack
100 0.45ns 0.45ns 1.00 0 0
1000 0.24ns 0.24ns 1.00 0 0
10000 0.32ns 0.32ns 1.02 0 0
100000 0.50ns 0.43ns 🚀 0.87 0 0
1000000 0.67ns 0.69ns 1.03 0 0
world_add_remove_1
100 49.18ns 48.58ns 0.99 0 0
10000 50.48ns 49.46ns 0.98 0 0
world_add_remove_1_batch
100 4.10ns 4.10ns 1.00 0 0
10000 2.93ns 2.84ns 0.97 0 0
world_add_remove_1_large
100 54.45ns 54.31ns 1.00 0 0
10000 54.78ns 54.78ns 1.00 0 0
world_add_remove_1_soa
100 55.18ns 55.51ns 1.01 0 0
10000 56.29ns 56.73ns 1.01 0 0
world_add_remove_8
100 98.61ns 98.16ns 1.00 0 0
10000 100.43ns 99.88ns 0.99 0 0
world_add_remove_8_large
100 128.92ns 127.87ns 0.99 0 0
10000 130.11ns 129.11ns 0.99 0 0
world_add_remove_8_soa
100 137.51ns 137.72ns 1.00 0 0
10000 141.05ns 141.08ns 1.00 0 0
world_copy_entity_5
100 28.92ns 29.29ns 1.01 0 0
10000 28.63ns 28.93ns 1.01 0 0
world_get_1
100 1.04ns 1.05ns 1.02 0 0
10000 0.95ns 0.96ns 1.02 0 0
world_get_1_soa
100 1.62ns 1.62ns 1.00 0 0
10000 1.54ns 1.54ns 1.00 0 0
world_get_5
100 3.28ns 3.23ns 0.99 0 0
10000 3.21ns 3.16ns 0.99 0 0
world_get_5_unchecked
100 1.85ns 1.85ns 1.00 0 0
10000 1.84ns 1.84ns 1.00 0 0
world_get_rel
100 1.04ns 1.04ns 1.00 0 0
10000 0.94ns 0.94ns 1.00 0 0
world_has_1
100 1.05ns 1.05ns 1.00 0 0
10000 0.96ns 0.95ns 1.00 0 0
world_has_5
100 1.76ns 1.77ns 1.01 0 0
10000 1.68ns 1.69ns 1.01 0 0
world_new_entities_1
100 2.98ns 2.94ns 0.99 0 0
10000 2.23ns 2.20ns 0.99 0 0
world_new_entities_1_def
100 3.04ns 2.94ns 0.97 0 0
10000 2.41ns 2.33ns 0.97 0 0
world_new_entities_5
100 4.77ns 4.74ns 0.99 0 0
10000 3.84ns 3.88ns 1.01 0 0
world_new_entities_5_def
100 4.67ns 4.64ns 0.99 0 0
10000 3.99ns 3.98ns 1.00 0 0
world_new_entity_1
100 15.26ns 14.59ns 0.97 0 0
10000 15.16ns 14.47ns 0.97 0 0
world_new_entity_1_rel
100 50.30ns 43.34ns 🚀 0.87 0 0
10000 50.67ns 43.15ns 🚀 0.86 0 0
world_new_entity_1_soa
100 19.10ns 15.83ns 🚀 0.85 0 0
10000 18.95ns 15.69ns 🚀 0.85 0 0
world_new_entity_5
100 22.24ns 23.14ns 1.04 0 0
10000 22.49ns 23.43ns 1.04 0 0
world_new_entity_5_rel
100 63.25ns 62.82ns 0.99 0 0
10000 63.73ns 63.40ns 1.00 0 0
world_new_entity_5_soa
100 36.00ns 33.00ns 0.92 0 0
10000 37.02ns 33.64ns 0.92 0 0
world_partition
100 16.23ns 16.33ns 1.01 0 0
10000 22.56ns 24.04ns 1.07 0 0
world_posvel
100 2.84ns 2.83ns 1.00 0 0
10000 2.91ns 2.94ns 1.01 0 0
world_remove_entities_5
100 2.10ns 2.14ns 1.02 0 0
10000 0.97ns 0.97ns 1.00 0 0
world_remove_entity_5
100 22.68ns 22.57ns 1.00 0 0
10000 22.42ns 22.35ns 1.00 0 0
world_resource
1 8.11ns 8.04ns 0.99 0 0
world_set_1
100 2.91ns 2.91ns 1.00 0 0
10000 3.02ns 3.01ns 1.00 0 0
world_set_1_soa
100 2.71ns 2.65ns 0.98 0 0
10000 2.79ns 2.78ns 1.00 0 0
world_set_5
100 8.05ns 8.07ns 1.00 0 0
10000 8.84ns 8.81ns 1.00 0 0
world_set_rel
100 50.66ns 50.63ns 1.00 0 0
10000 49.25ns 49.50ns 1.01 0 0
world_set_rel_batch
100 2.44ns 2.34ns 0.96 0 0
10000 0.76ns 0.76ns 1.00 0 0
world_shuffle
100 61.82ns 61.19ns 0.99 0 0
10000 79.51ns 80.81ns 1.02 0 0
world_sort
100 64.62ns 64.65ns 1.00 0 0
10000 217.19ns 217.40ns 1.00 0 0
world_update_1
100 2.54ns 2.53ns 1.00 0 0
10000 2.62ns 2.61ns 0.99 0 0
world_update_5
100 9.78ns 9.77ns 1.00 0 0
10000 10.18ns 10.18ns 1.00 0 0

@ameligrana ameligrana marked this pull request as ready for review May 8, 2026 09:59
Comment thread CHANGELOG.md Outdated
@mlange-42
Copy link
Copy Markdown
Member

@ameligrana This looks like a good solution to me. I guess combining this with the storage modes is perfectly possible? For cases where relation components also have fields...

@ameligrana
Copy link
Copy Markdown
Member Author

yes, sure it should be already possible

@ameligrana
Copy link
Copy Markdown
Member Author

thanks for looking into this @mlange-42 !

@ameligrana ameligrana merged commit 31342c2 into main May 19, 2026
19 of 20 checks passed
@ameligrana ameligrana deleted the rel2 branch May 19, 2026 15:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

breaking-change Breaking changes enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants