Skip to content

refactor: remove obsolete Entity type erasure - #1063

Merged
cdc-as81 merged 2 commits into
mainfrom
cdc-as81-remove-entity-any
Sep 29, 2026
Merged

cdc-as81 merged 2 commits into
mainfrom
cdc-as81-remove-entity-any

Conversation

@cdc-as81

Copy link
Copy Markdown
Contributor

Summary

  • Remove the unused Any supertrait from Entity.
  • Remove Entity::as_any, Entity::as_any_mut, and BxEntity.
  • Retain the explicit 'static bound required by TypeId.
  • Update macro-generated and manual Entity implementations and tests.
  • Leave unrelated type-erasure mechanisms in entity storage, property storage,
    networks, and value-change counters unchanged.

Breaking changes

This intentionally removes the following public API:

  • Entity: Any
  • Entity::as_any
  • Entity::as_any_mut
  • BxEntity

No compatibility shims or replacement aliases are included.

@cdc-as81 cdc-as81 linked an issue Sep 24, 2026 that may be closed by this pull request
@github-actions

Copy link
Copy Markdown

Benchmark Results

Hyperfine

Command Mean [ms] Min [ms] Max [ms] Relative
large_sir::baseline 2.4 ± 0.1 2.3 2.8 1.00 ± 0.06
large_sir::baseline_households 2.4 ± 0.1 2.3 2.7 1.00
large_sir::entities 4.4 ± 0.2 4.2 4.7 1.82 ± 0.11
large_sir::households 4.3 ± 0.2 4.1 4.6 1.78 ± 0.10

Criterion

Regressions (slower)
Group Bench Param Change CI Lower CI Upper
large_dataset bench_query_population_derived_property_entities 12.750% 11.870% 13.488%
sample_entity sample_entity_multi_property_indexed 10000 8.393% 7.167% 9.648%
sample_entity sample_entity_multi_property_indexed 100000 8.101% 7.103% 9.216%
sample_entity sample_entity_multi_property_indexed 1000 7.564% 5.883% 9.284%
large_dataset bench_query_population_multi_indexed_entities 6.896% 6.523% 7.261%
large_dataset bench_query_population_indexed_property_entities 5.842% 5.414% 6.209%
indexing query_people_indexed_multi-property_entities 3.459% 2.807% 4.129%
indexing query_people_count_single_indexed_property_entities 2.485% 1.994% 2.879%
Improvements (faster)
Group Bench Param Change CI Lower CI Upper
sample_entity sample_entity_single_property_unindexed 10000 -11.838% -16.368% -6.956%
sample_entity sample_entity_whole_population 100000 -6.180% -8.803% -3.578%
algorithm_benches algorithm_sampling_single_l_reservoir -5.711% -6.667% -4.727%
large_dataset bench_query_population_multi_unindexed_entities -5.084% -6.959% -3.321%
algorithm_benches algorithm_sampling_multiple_known_length -4.282% -4.966% -3.642%
algorithm_benches algorithm_sampling_single_rand_reservoir -3.926% -4.649% -3.247%
sampling sampling_single_known_length_entities -3.552% -4.128% -2.908%
examples example-basic-infection -3.515% -4.118% -2.948%
algorithm_benches algorithm_sampling_multiple_l_reservoir -3.102% -4.092% -2.102%
sampling count_and_sampling_single_unindexed_concrete_plus_derived_entiti -3.025% -3.544% -2.525%
indexing query_people_count_multiple_individually_indexed_properties_enti -2.656% -2.872% -2.384%
counts single_property_unindexed_entities -2.510% -3.984% -1.135%
sampling count_and_sampling_single_known_length_entities -2.130% -2.457% -1.778%
indexing query_people_multiple_individually_indexed_properties_entities -1.974% -2.120% -1.832%
examples example-births-deaths -1.822% -2.108% -1.505%
sampling sampling_multiple_known_length_entities -1.429% -1.710% -1.165%
Unchanged / inconclusive (CI crosses 0%)
Group Bench Param Change CI Lower CI Upper
counts reindex_after_adding_more_entities 1.794% 0.831% 2.786%
sample_entity sample_entity_single_property_unindexed 1000 -1.607% -4.674% 1.207%
counts single_property_indexed_entities -1.455% -2.560% -0.375%
counts index_after_adding_entities -1.382% -2.365% -0.362%
large_dataset bench_query_population_property_entities 1.322% 0.141% 2.694%
sample_entity sample_entity_single_property_indexed 1000 -0.918% -1.524% -0.293%
sampling sampling_single_l_reservoir_entities -0.901% -1.230% -0.597%
algorithm_benches algorithm_sampling_single_known_length 0.797% 0.149% 1.421%
sampling sampling_multiple_unindexed_entities 0.696% 0.248% 1.115%
sampling sampling_multiple_l_reservoir_entities 0.676% 0.512% 0.837%
large_dataset bench_filter_unindexed_entity 0.595% -2.374% 3.446%
counts multi_property_indexed_entities -0.581% -1.874% 0.655%
indexing query_people_count_indexed_multi-property_entities 0.440% -0.046% 0.897%
sample_entity sample_entity_single_property_indexed 100000 -0.428% -0.951% 0.220%
large_dataset bench_match_entity -0.309% -0.796% 0.069%
indexing with_query_results_single_indexed_property_entities 0.263% -0.260% 1.026%
indexing with_query_results_indexed_multi-property_entities -0.244% -0.748% 0.201%
sampling sampling_single_unindexed_entities -0.195% -0.272% -0.124%
sample_entity sample_entity_single_property_unindexed 100000 -0.185% -0.631% 0.156%
sample_entity sample_entity_whole_population 1000 0.182% -0.308% 0.604%
sampling sampling_single_unindexed_concrete_plus_derived_entities -0.176% -0.308% -0.059%
sample_entity sample_entity_whole_population 10000 -0.153% -0.542% 0.293%
sample_entity sample_entity_single_property_indexed 10000 -0.152% -0.745% 0.309%
counts multi_property_unindexed_entities -0.124% -1.124% 0.871%
counts concrete_plus_derived_unindexed_entities -0.121% -0.974% 0.786%
indexing query_people_single_indexed_property_entities 0.115% -0.020% 0.276%
large_dataset bench_filter_indexed_entity 0.081% -1.753% 1.827%
indexing with_query_results_multiple_individually_indexed_properties_enti -0.077% -0.312% 0.112%
Not Compared (no baseline yet)
Group Bench Reason
(none)

github-actions Bot added a commit that referenced this pull request Sep 24, 2026

@RobertJacobsonCDC RobertJacobsonCDC left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simple enough! Rebase before merging.

Comment thread src/entity/entity.rs Outdated
@github-actions

Copy link
Copy Markdown

Benchmark Results

Hyperfine

Command Mean [ms] Min [ms] Max [ms] Relative
large_sir::baseline 2.7 ± 0.1 2.6 2.9 1.00 ± 0.03
large_sir::baseline_households 2.7 ± 0.1 2.6 2.9 1.00
large_sir::entities 5.0 ± 0.2 4.8 6.0 1.84 ± 0.08
large_sir::households 4.9 ± 0.1 4.7 5.1 1.81 ± 0.05

Criterion

Regressions (slower)
Group Bench Param Change CI Lower CI Upper
sample_entity sample_entity_multi_property_indexed 10000 38.973% 37.974% 39.881%
sample_entity sample_entity_multi_property_indexed 100000 38.581% 37.308% 39.800%
sample_entity sample_entity_multi_property_indexed 1000 37.525% 36.327% 38.680%
sample_entity sample_entity_single_property_indexed 10000 3.931% 3.493% 4.261%
sample_entity sample_entity_single_property_indexed 1000 3.664% 3.137% 4.145%
sample_entity sample_entity_single_property_indexed 100000 2.778% 2.131% 3.460%
counts multi_property_indexed_entities 2.766% 2.018% 3.580%
Improvements (faster)
Group Bench Param Change CI Lower CI Upper
large_dataset bench_query_population_multi_indexed_entities -23.703% -24.282% -23.044%
sample_entity sample_entity_single_property_unindexed 1000 -18.135% -19.432% -16.717%
large_dataset bench_query_population_derived_property_entities -6.089% -6.643% -5.501%
sample_entity sample_entity_single_property_unindexed 10000 -5.625% -8.729% -2.552%
sample_entity sample_entity_whole_population 1000 -3.970% -4.811% -3.148%
sampling sampling_single_known_length_entities -3.230% -4.254% -2.210%
indexing query_people_multiple_individually_indexed_properties_entities -1.776% -1.945% -1.590%
sample_entity sample_entity_whole_population 100000 -1.728% -2.026% -1.445%
sampling sampling_multiple_known_length_entities -1.681% -2.100% -1.349%
indexing query_people_count_multiple_individually_indexed_properties_enti -1.601% -1.756% -1.482%
sample_entity sample_entity_whole_population 10000 -1.548% -1.914% -1.047%
Unchanged / inconclusive (CI crosses 0%)
Group Bench Param Change CI Lower CI Upper
large_dataset bench_filter_unindexed_entity -1.840% -5.164% 1.566%
sampling sampling_single_l_reservoir_entities 1.384% 0.995% 1.856%
sampling count_and_sampling_single_known_length_entities -1.364% -2.494% -0.337%
examples example-births-deaths -1.271% -1.636% -0.840%
sample_entity sample_entity_single_property_unindexed 100000 1.166% 0.618% 1.810%
large_dataset bench_query_population_multi_unindexed_entities -1.097% -1.326% -0.890%
indexing query_people_single_indexed_property_entities -1.073% -1.546% -0.573%
algorithm_benches algorithm_sampling_single_rand_reservoir -0.998% -1.895% -0.349%
indexing with_query_results_single_indexed_property_entities -0.973% -1.423% -0.447%
counts reindex_after_adding_more_entities 0.957% 0.519% 1.538%
counts index_after_adding_entities 0.936% 0.479% 1.491%
large_dataset bench_query_population_indexed_property_entities -0.573% -0.922% -0.291%
sampling sampling_single_unindexed_concrete_plus_derived_entities -0.553% -0.745% -0.266%
indexing with_query_results_multiple_individually_indexed_properties_enti 0.533% 0.202% 0.967%
large_dataset bench_match_entity 0.493% -0.665% 1.613%
counts single_property_indexed_entities 0.470% 0.217% 0.728%
counts single_property_unindexed_entities 0.463% -0.265% 1.261%
large_dataset bench_filter_indexed_entity -0.400% -1.626% 0.966%
indexing with_query_results_indexed_multi-property_entities -0.391% -0.629% -0.132%
indexing query_people_indexed_multi-property_entities -0.318% -0.579% -0.077%
algorithm_benches algorithm_sampling_multiple_known_length -0.232% -0.473% 0.034%
indexing query_people_count_single_indexed_property_entities 0.225% -0.133% 0.701%
counts concrete_plus_derived_unindexed_entities 0.180% -0.130% 0.721%
algorithm_benches algorithm_sampling_single_l_reservoir -0.167% -0.725% 0.374%
large_dataset bench_query_population_property_entities 0.158% -0.288% 0.685%
indexing query_people_count_indexed_multi-property_entities -0.142% -0.269% 0.037%
sampling sampling_multiple_l_reservoir_entities 0.101% -0.213% 0.449%
algorithm_benches algorithm_sampling_single_known_length 0.083% -0.242% 0.484%
examples example-basic-infection -0.063% -1.573% 1.930%
sampling sampling_multiple_unindexed_entities 0.032% -0.072% 0.143%
sampling sampling_single_unindexed_entities 0.027% -0.098% 0.150%
sampling count_and_sampling_single_unindexed_concrete_plus_derived_entiti -0.017% -0.103% 0.080%
algorithm_benches algorithm_sampling_multiple_l_reservoir -0.011% -0.490% 0.419%
counts multi_property_unindexed_entities -0.004% -0.290% 0.441%
Not Compared (no baseline yet)
Group Bench Reason
(none)

github-actions Bot added a commit that referenced this pull request Sep 29, 2026
@cdc-as81
cdc-as81 merged commit ae09505 into main Sep 29, 2026
22 checks passed
@cdc-as81
cdc-as81 deleted the cdc-as81-remove-entity-any branch September 29, 2026 19:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

We no longer need Entity: Any

3 participants