Skip to content

Adapt subtree selectors to query candidate size - #223

Merged
VEZY merged 4 commits into
mainfrom
codex/adaptive-subtree-selectors
Oct 15, 2026
Merged

VEZY merged 4 commits into
mainfrom
codex/adaptive-subtree-selectors

Conversation

@VEZY

@VEZY VEZY commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Plant-local selectors spanning more than 32 objects previously copied global label candidate sets before checking ancestry. With common leaf labels, repeating that work for every plant and input caused compilation time and allocations to grow roughly quadratically with scene density.

The resolver now borrows the smallest usable registry candidate bucket and uses its estimated size as the budget for an iterative subtree walk. A completed walk is filtered locally; otherwise resolution filters the bucket by every label and topology criterion. Candidates already supplied by the relation resolver skip repeated membership checks while retaining label/ID filtering and explicit scope intersections. This preserves collection matching, explicit IDs, singular cardinality, named/relative scopes, relations, and deterministic ordering without copying scene-wide sets.

Repeated Many queries within one consumer's compilation share an owned, unfiltered ID snapshot. Each binding owns a separate result vector before producer filtering. The cache is discarded after consumer assembly; existing lifecycle refresh paths remain responsible for topology and label changes.

Generic benchmark comparison against 7f3293644c408a1197131a57ab5301c700ed3140, using Julia 1.13.1 through Kaimon:

Full compilation fixture Base Candidate Cumulative allocations, base → candidate
1376 plants, 4 inputs, 269697 objects 370.56 s 2.21 s 181.96 GB → 1.09 GB
100000-object sparse subtree, 4 inputs 37.37 ms 2.30 ms 46.49 MB → 1.85 MB

The largest case uses one timed sample after warming the same signatures on smaller fixtures. Smaller and sparse cases use three samples. Exact ordered binding IDs, producers, variables and live references are checked, including all 5504 bindings in the largest four-input case. Construction and ordinary execution are measured separately; no timestep speedup is claimed. Query sharing reduces candidate-only query-work allocations from 37.47 MB to 10.06 MB at 304 plants/four inputs; this is not a full compiler ablation. The benchmark notes, standalone driver and paired JSON include all eight comparisons, source fingerprints and measurement limitations. These generic fixtures do not establish scientific AgriPV validity or downstream full-scene performance.

Initial implementation validation (a20b970f, 2026-10-08): the full Kaimon-controlled regression suite passed on the exact repository source: 6371 passed, 0 failed, 0 errored, Julia 1.13.1 (2113.1 s). The focused adaptive selector/binding/lifecycle suite also passed 516 assertions separately. The test project now selects the local package source, and the runner fails immediately if it loads another checkout. XPalm and PlantGeom integrations, documentation, the documentation preview and graph-editor E2E checks have passed remotely; all six Julia 1.10/latest CI jobs subsequently passed for that commit.

Initial-commit remote validation had an independent blocker: PlantBiophysics multi-timestep setup fails with UndefVarError: leaf_scene not defined at benchmark/test-plantbiophysics.jl:51, before running benchmarks. That file and its test runner are identical to base commit 7f329364; the job clones PlantBiophysics master 70963fb0f60414026773e0361155d8729a79e418, which has removed that API. This selector PR leaves the separate downstream benchmark migration for follow-up.

The initial-commit PlantBiophysics integration job also fails in downstream test/evaluation/scenarios.jl:205: CSV 1.1.0 supplies a text time column, and Dates.format raises a MethodError on DataStrings.DataString values. The log reports 559 passes, zero failures and one error after its scenario simulations complete. Relevant PlantSimEngine time/environment/runtime files and the integration workflow are unchanged from the base; that base was not rerun for this downstream error.

Current-head validation (41de32f2, 2026-10-14): the resolved-relation path retains label/ID filters and explicit scope intersections while skipping redundant membership scans. Deep-chain tests at depths 64 and 256 enforce a linear comparison bound and verify exact ordering, scope intersections, singular selection and descendant root exclusion. At depth 256, forcing the previous full-check path made 33152 ID comparisons; the fixed query made zero with identical IDs, so the regression gate rejects the previous behavior without timing thresholds.

Fresh Kaimon-controlled checks on Julia 1.13.1 passed 2800 assertions, zero failures or errors: adaptive selectors 540; unified model/object API 751; API stabilization 760; binding inference 16; identity-aware inputs 82; hard calls 279; initializers 157; distributed output targets 215. Logging-sensitive suites used Kaimon's normal-stdio test subprocess. The original full-suite and benchmark results above remain attributed to a20b970f; this follow-up ran the listed focused contract suites. CI for the new head has been triggered by the push.

@VEZY
VEZY marked this pull request as ready for review October 8, 2026 21:32
@github-actions

github-actions Bot commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Benchmark Results (Julia v1.12.1)

Time benchmarks
main 25f5ace... main / 25f5ace...
bench_linux/PSE 12.3 s 10.1 s 1.22
bench_linux/PSE_assign_outputs_broadcast_exact_10 0.611 ± 0.11 μs 0.531 ± 0.07 μs 1.15 ± 0.26
bench_linux/PSE_assign_outputs_broadcast_exact_1000 2.1 ± 0.42 μs 2.18 ± 0.33 μs 0.967 ± 0.24
bench_linux/PSE_assign_outputs_broadcast_exact_10000 25 ± 13 μs 18.4 ± 2.9 μs 1.36 ± 0.72
bench_linux/PSE_assign_outputs_columns_19columns_exact_1000 0.0366 ± 0.0072 ms 30.4 ± 4.9 μs 1.2 ± 0.31
bench_linux/PSE_assign_outputs_columns_2columns_exact_10 0.751 ± 0.1 μs 0.732 ± 0.081 μs 1.03 ± 0.18
bench_linux/PSE_assign_outputs_columns_2columns_exact_1000 4.2 ± 0.84 μs 3.81 ± 0.37 μs 1.1 ± 0.25
bench_linux/PSE_assign_outputs_columns_2columns_exact_10000 0.0623 ± 0.02 ms 0.0561 ± 0.0071 ms 1.11 ± 0.38
bench_linux/PSE_assign_outputs_columns_2columns_permuted_10 0.912 ± 0.12 μs 0.762 ± 0.082 μs 1.2 ± 0.2
bench_linux/PSE_assign_outputs_columns_2columns_permuted_1000 7.23 ± 0.61 μs 6.29 ± 0.84 μs 1.15 ± 0.18
bench_linux/PSE_assign_outputs_columns_2columns_permuted_10000 0.0741 ± 0.0057 ms 0.0762 ± 0.017 ms 0.972 ± 0.23
bench_linux/PSE_assign_outputs_columns_7columns_exact_1000 9.75 ± 0.77 μs 10.1 ± 1.1 μs 0.965 ± 0.13
bench_linux/PSE_assign_outputs_columns_exact_10 0.692 ± 0.09 μs 0.621 ± 0.09 μs 1.11 ± 0.22
bench_linux/PSE_assign_outputs_columns_exact_1000 3.46 ± 0.54 μs 2.35 ± 0.33 μs 1.47 ± 0.31
bench_linux/PSE_assign_outputs_columns_exact_10000 20.2 ± 5 μs 19.9 ± 3.6 μs 1.02 ± 0.31
bench_linux/PSE_assign_outputs_columns_heterogeneous_exact_10 1.18 ± 0.14 μs 1.18 ± 0.15 μs 1 ± 0.17
bench_linux/PSE_assign_outputs_columns_heterogeneous_exact_1000 0.0469 ± 0.015 ms 0.0404 ± 0.011 ms 1.16 ± 0.48
bench_linux/PSE_assign_outputs_columns_heterogeneous_exact_10000 0.546 ± 0.1 ms 0.423 ± 0.13 ms 1.29 ± 0.45
bench_linux/PSE_assign_outputs_columns_permuted_10 0.742 ± 0.081 μs 0.711 ± 0.1 μs 1.04 ± 0.19
bench_linux/PSE_assign_outputs_columns_permuted_1000 4.26 ± 0.59 μs 3.65 ± 0.42 μs 1.17 ± 0.21
bench_linux/PSE_assign_outputs_columns_permuted_10000 0.0464 ± 0.022 ms 31.1 ± 3.7 μs 1.49 ± 0.74
bench_linux/PSE_assign_outputs_control_10 0.501 ± 0.09 μs 0.461 ± 0.071 μs 1.09 ± 0.26
bench_linux/PSE_assign_outputs_control_1000 0.942 ± 0.33 μs 0.852 ± 0.39 μs 1.11 ± 0.64
bench_linux/PSE_assign_outputs_control_10000 1 ± 0.28 μs 2.13 ± 0.73 μs 0.469 ± 0.21
bench_linux/PSE_assign_outputs_ref_loop_2columns_exact_10 0.711 ± 0.1 μs 0.751 ± 0.09 μs 0.947 ± 0.18
bench_linux/PSE_assign_outputs_ref_loop_2columns_exact_1000 3.88 ± 0.59 μs 3.78 ± 0.47 μs 1.03 ± 0.2
bench_linux/PSE_assign_outputs_ref_loop_2columns_exact_10000 0.0554 ± 0.016 ms 0.0551 ± 0.0052 ms 1.01 ± 0.3
bench_linux/PSE_assign_outputs_ref_loop_exact_10 0.641 ± 0.081 μs 0.561 ± 0.09 μs 1.14 ± 0.23
bench_linux/PSE_assign_outputs_ref_loop_exact_1000 2.6 ± 0.33 μs 2.83 ± 0.41 μs 0.919 ± 0.18
bench_linux/PSE_assign_outputs_ref_loop_exact_10000 20.8 ± 5.1 μs 25.9 ± 3.8 μs 0.802 ± 0.23
bench_linux/PSE_assign_outputs_ref_loop_heterogeneous_exact_10 0.932 ± 0.15 μs 0.942 ± 0.13 μs 0.989 ± 0.21
bench_linux/PSE_assign_outputs_ref_loop_heterogeneous_exact_1000 28.7 ± 7.6 μs 24 ± 6.5 μs 1.2 ± 0.45
bench_linux/PSE_assign_outputs_ref_loop_heterogeneous_exact_10000 0.251 ± 0.077 ms 0.234 ± 0.062 ms 1.07 ± 0.43
bench_linux/PSE_assign_outputs_table_2columns_exact_10 0.811 ± 0.12 μs 0.862 ± 0.09 μs 0.941 ± 0.17
bench_linux/PSE_assign_outputs_table_2columns_exact_1000 5.43 ± 0.89 μs 5.71 ± 0.78 μs 0.951 ± 0.2
bench_linux/PSE_assign_outputs_table_2columns_exact_10000 0.0661 ± 0.0079 ms 0.0534 ± 0.015 ms 1.24 ± 0.37
bench_linux/PSE_assign_outputs_table_2columns_permuted_10 0.952 ± 0.11 μs 0.942 ± 0.1 μs 1.01 ± 0.16
bench_linux/PSE_assign_outputs_table_2columns_permuted_1000 7.35 ± 0.78 μs 7.16 ± 0.81 μs 1.03 ± 0.16
bench_linux/PSE_assign_outputs_table_2columns_permuted_10000 0.0813 ± 0.019 ms 0.0649 ± 0.0054 ms 1.25 ± 0.32
bench_linux/PSE_assign_outputs_table_exact_10 0.661 ± 0.091 μs 0.812 ± 0.13 μs 0.814 ± 0.17
bench_linux/PSE_assign_outputs_table_exact_1000 2.15 ± 0.28 μs 2.67 ± 0.58 μs 0.807 ± 0.2
bench_linux/PSE_assign_outputs_table_exact_10000 21.3 ± 3.2 μs 28 ± 4.9 μs 0.759 ± 0.17
bench_linux/PSE_assign_outputs_table_permuted_10 0.662 ± 0.081 μs 0.811 ± 0.1 μs 0.816 ± 0.14
bench_linux/PSE_assign_outputs_table_permuted_1000 4.72 ± 0.64 μs 4.65 ± 0.73 μs 1.01 ± 0.21
bench_linux/PSE_assign_outputs_table_permuted_10000 29.7 ± 4.9 μs 0.0372 ± 0.0062 ms 0.797 ± 0.19
bench_linux/PSE_bound_many_input_steps_1000 0.122 ± 0.01 ms 0.114 ± 0.0052 ms 1.06 ± 0.1
bench_linux/PSE_bound_many_sum_1000 1.79 ± 0.47 μs 2.13 ± 0.6 μs 0.843 ± 0.32
bench_linux/PSE_bound_many_sum_100000 0.58 ± 0.1 ms 0.484 ± 0.075 ms 1.2 ± 0.28
bench_linux/PSE_bound_objectref_sum_1000 24.1 ± 4.4 μs 19.8 ± 4.4 μs 1.22 ± 0.35
bench_linux/PSE_bound_objectref_sum_100000 2.66 ± 0.61 ms 2.34 ± 0.37 ms 1.14 ± 0.32
bench_linux/PSE_call_binding_signature_4096 2.07 ± 0.63 μs 1.76 ± 0.42 μs 1.17 ± 0.45
bench_linux/PSE_compiled_hard_call_heterogeneous 0.542 ± 0.053 ms 0.53 ± 0.055 ms 1.02 ± 0.15
bench_linux/PSE_compiled_hard_call_many 30.9 ± 4 ms 25.8 ± 1.4 ms 1.19 ± 0.17
bench_linux/PSE_compiled_hard_call_nested 0.538 ± 0.053 ms 0.543 ± 0.056 ms 0.99 ± 0.14
bench_linux/PSE_compiled_hard_call_published 0.418 ± 0.042 ms 0.413 ± 0.038 ms 1.01 ± 0.14
bench_linux/PSE_compiled_hard_call_repeated 0.481 ± 0.039 ms 0.466 ± 0.042 ms 1.03 ± 0.12
bench_linux/PSE_compiled_hard_call_sampled_environment 0.408 ± 0.039 ms 0.411 ± 0.039 ms 0.995 ± 0.13
bench_linux/PSE_compiled_hard_call_singular 0.415 ± 0.04 ms 0.416 ± 0.041 ms 1 ± 0.14
bench_linux/PSE_distributed_assign_broadcast_10 0.07 ± 0.019 μs 0.07 ± 0.001 μs 1 ± 0.27
bench_linux/PSE_distributed_assign_broadcast_1000 1.18 ± 0.39 μs 1.02 ± 0.23 μs 1.16 ± 0.46
bench_linux/PSE_distributed_assign_broadcast_10000 15.1 ± 2.6 μs 13.5 ± 2 μs 1.12 ± 0.26
bench_linux/PSE_distributed_assign_columns_10 0.071 ± 0.01 μs 0.07 ± 0.009 μs 1.01 ± 0.19
bench_linux/PSE_distributed_assign_columns_1000 1.7 ± 0.37 μs 1.72 ± 0.39 μs 0.988 ± 0.31
bench_linux/PSE_distributed_assign_columns_10000 29.2 ± 5 μs 27.4 ± 9.2 μs 1.06 ± 0.4
bench_linux/PSE_distributed_assign_exact_10 0.061 ± 0.01 μs 0.07 ± 0.01 μs 0.871 ± 0.19
bench_linux/PSE_distributed_assign_exact_1000 0.881 ± 0.2 μs 1.18 ± 0.35 μs 0.745 ± 0.28
bench_linux/PSE_distributed_assign_exact_10000 18.2 ± 3.9 μs 17.5 ± 4.2 μs 1.04 ± 0.34
bench_linux/PSE_distributed_assign_exact_100000 0.178 ± 0.025 ms 0.158 ± 0.034 ms 1.13 ± 0.29
bench_linux/PSE_distributed_assign_heterogeneous_10 0.32 ± 0.01 μs 0.32 ± 0.01 μs 1 ± 0.044
bench_linux/PSE_distributed_assign_heterogeneous_1000 26.1 ± 4.8 μs 24.9 ± 5.2 μs 1.05 ± 0.29
bench_linux/PSE_distributed_assign_heterogeneous_10000 0.24 ± 0.024 ms 0.24 ± 0.039 ms 0.998 ± 0.19
bench_linux/PSE_distributed_assign_permuted_10 0.07 ± 0.001 μs 0.07 ± 0.01 μs 1 ± 0.14
bench_linux/PSE_distributed_assign_permuted_1000 1.45 ± 0.21 μs 1.6 ± 0.37 μs 0.906 ± 0.25
bench_linux/PSE_distributed_assign_permuted_10000 23.2 ± 5.8 μs 16 ± 2.5 μs 1.45 ± 0.43
bench_linux/PSE_distributed_assign_permuted_100000 0.243 ± 0.041 ms 0.197 ± 0.025 ms 1.23 ± 0.26
bench_linux/PSE_distributed_assign_sparse_10 0.06 ± 0.01 μs 0.06 ± 0.009 μs 1 ± 0.22
bench_linux/PSE_distributed_assign_sparse_1000 0.531 ± 0.46 μs 0.341 ± 0.079 μs 1.56 ± 1.4
bench_linux/PSE_distributed_assign_sparse_10000 5.6 ± 1.1 μs 5.23 ± 1.1 μs 1.07 ± 0.31
bench_linux/PSE_distributed_assign_status_10 0.06 ± 0.01 μs 0.06 ± 0.01 μs 1 ± 0.24
bench_linux/PSE_distributed_assign_status_1000 1.1 ± 0.26 μs 1.39 ± 0.51 μs 0.791 ± 0.35
bench_linux/PSE_distributed_assign_status_10000 19.4 ± 3.9 μs 15.8 ± 3 μs 1.23 ± 0.34
bench_linux/PSE_distributed_compile_active_1000 4.91 ± 0.29 ms 4.14 ± 0.18 ms 1.19 ± 0.088
bench_linux/PSE_distributed_compile_none_1000 0.283 ± 0.077 ms 0.453 ± 0.049 ms 0.624 ± 0.18
bench_linux/PSE_distributed_compile_permutation_1000 0.0981 ± 0.0086 ms 0.0911 ± 0.0064 ms 1.08 ± 0.12
bench_linux/PSE_distributed_lifecycle_add_1000 3.31 ± 0.2 ms 3.09 ± 0.18 ms 1.07 ± 0.09
bench_linux/PSE_distributed_mapping_refresh_10 0.862 ± 0.12 μs 0.892 ± 0.091 μs 0.966 ± 0.17
bench_linux/PSE_distributed_mapping_refresh_1000 0.0946 ± 0.0079 ms 0.0918 ± 0.0067 ms 1.03 ± 0.11
bench_linux/PSE_distributed_mapping_refresh_10000 1 ± 0.036 ms 1.05 ± 0.066 ms 0.958 ± 0.07
bench_linux/PSE_hard_calls_dense 0.278 ± 0.026 s 0.278 ± 0.045 s 0.997 ± 0.18
bench_linux/PSE_hard_calls_sparse 0.0339 ± 0.0016 s 0.0334 ± 0.0017 s 1.02 ± 0.071
bench_linux/PSE_hard_calls_zero 0.0335 ± 0.002 s 0.0346 ± 0.0023 s 0.969 ± 0.087
bench_linux/PSE_immutable_scenario_all 3.32 ± 0.099 ms 3.29 ± 0.074 ms 1.01 ± 0.038
bench_linux/PSE_immutable_scenario_none 3.28 ± 0.025 ms 3.28 ± 0.023 ms 1 ± 0.01
bench_linux/PSE_immutable_scenario_requests 3.38 ± 0.092 ms 3.34 ± 0.083 ms 1.01 ± 0.037
bench_linux/PSE_lifecycle_immediate_hard_call 2.54 ± 0.62 ms 2.57 ± 0.54 ms 0.988 ± 0.32
bench_linux/PSE_lifecycle_large 1.39 ± 0.27 ms 1.27 ± 0.41 ms 1.1 ± 0.41
bench_linux/PSE_lifecycle_small 0.171 ± 0.02 ms 0.178 ± 0.021 ms 0.957 ± 0.16
bench_linux/PSE_many_cadence_schedule 2.23 ± 0.49 ms 2.15 ± 0.051 ms 1.04 ± 0.23
bench_linux/PSE_multirate_no_output_run 0.203 ± 0.018 s 0.206 ± 0.026 s 0.985 ± 0.15
bench_linux/PSE_multirate_output_request_run 0.24 ± 0.023 s 0.216 ± 0.028 s 1.11 ± 0.18
bench_linux/PSE_multirate_retain_all_run 0.229 ± 0.022 s 0.2 ± 0.029 s 1.15 ± 0.2
bench_linux/PSE_objectref_sum_1000 24.5 ± 5.4 μs 22.7 ± 5.2 μs 1.08 ± 0.34
bench_linux/PSE_objectref_sum_100000 2.41 ± 0.62 ms 2.27 ± 0.56 ms 1.06 ± 0.38
bench_linux/PSE_organ_adaptation_1024 4.41 ± 0.2 ms 4.23 ± 0.2 ms 1.04 ± 0.069
bench_linux/PSE_organ_adaptation_256 1.05 ± 0.14 ms 1.07 ± 0.2 ms 0.986 ± 0.23
bench_linux/PSE_organ_adaptation_32 0.163 ± 0.025 ms 0.157 ± 0.024 ms 1.03 ± 0.22
bench_linux/PSE_organ_add_1024 0.088 ± 0.014 ms 0.0356 ± 0.0068 ms 2.47 ± 0.61
bench_linux/PSE_organ_add_256 28.8 ± 9.2 μs 22.4 ± 4.2 μs 1.29 ± 0.48
bench_linux/PSE_organ_add_32 16.2 ± 2.9 μs 17.5 ± 2.9 μs 0.926 ± 0.22
bench_linux/PSE_organ_add_continue_1024 0.457 ± 0.062 ms 0.331 ± 0.06 ms 1.38 ± 0.31
bench_linux/PSE_organ_add_continue_256 0.361 ± 0.22 ms 0.184 ± 0.06 ms 1.96 ± 1.4
bench_linux/PSE_organ_add_continue_32 0.114 ± 0.018 ms 0.112 ± 0.017 ms 1.02 ± 0.22
bench_linux/PSE_organ_add_refresh_1024 0.264 ± 0.038 ms 0.17 ± 0.054 ms 1.56 ± 0.55
bench_linux/PSE_organ_add_refresh_256 0.0853 ± 0.01 ms 0.0877 ± 0.0089 ms 0.973 ± 0.15
bench_linux/PSE_organ_add_refresh_32 0.0752 ± 0.0096 ms 0.0755 ± 0.009 ms 0.996 ± 0.17
bench_linux/PSE_organ_refresh_1024 0.226 ± 0.032 ms 0.121 ± 0.029 ms 1.87 ± 0.52
bench_linux/PSE_organ_refresh_256 0.142 ± 0.029 ms 0.068 ± 0.01 ms 2.09 ± 0.52
bench_linux/PSE_organ_refresh_32 0.0559 ± 0.0081 ms 0.0537 ± 0.0068 ms 1.04 ± 0.2
bench_linux/PSE_organ_status_recipe_refresh_1024 0.741 ± 0.065 ms 0.611 ± 0.027 ms 1.21 ± 0.12
bench_linux/PSE_organ_status_recipe_refresh_256 0.626 ± 0.054 ms 0.68 ± 0.035 ms 0.92 ± 0.092
bench_linux/PSE_organ_status_recipe_refresh_32 0.547 ± 0.074 ms 0.5 ± 0.078 ms 1.09 ± 0.23
bench_linux/PSE_refvector_sum_1000 2.44 ± 0.8 μs 1.87 ± 0.51 μs 1.3 ± 0.56
bench_linux/PSE_refvector_sum_100000 0.549 ± 0.1 ms 0.436 ± 0.088 ms 1.26 ± 0.35
bench_linux/PSE_selector_subtree_root_2048 4.81 ± 0.44 ms 3.25 ± 0.42 ms 1.48 ± 0.23
bench_linux/PSE_selector_subtree_tip_2048 12.7 ± 2.9 μs 24.6 ± 1.9 μs 0.517 ± 0.13
bench_linux/PSE_status_many_input_steps_1000 0.117 ± 0.0071 ms 0.12 ± 0.0093 ms 0.982 ± 0.097
bench_linux/PSE_status_read_write 30 ± 0 ns 30 ± 0 ns 1 ± 0
bench_linux/PSE_status_registry_lookup_1024 0.922 ± 0.55 μs 0.882 ± 0.44 μs 1.05 ± 0.81
bench_linux/PSE_status_registry_lookup_256 0.371 ± 0.17 μs 0.291 ± 0.061 μs 1.27 ± 0.64
bench_linux/PSE_status_registry_lookup_32 0.2 ± 0.04 μs 0.19 ± 0.03 μs 1.05 ± 0.27
bench_linux/PSE_status_registry_sweep_1024 0.119 ± 0.018 ms 0.112 ± 0.016 ms 1.07 ± 0.22
bench_linux/PSE_status_registry_sweep_256 24.3 ± 2.7 μs 25.8 ± 3.1 μs 0.945 ± 0.15
bench_linux/PSE_status_registry_sweep_32 3.42 ± 0.25 μs 3.21 ± 0.23 μs 1.07 ± 0.11
time_to_load 2.71 ± 0.27 s 2.22 ± 0.023 s 1.22 ± 0.12
Memory benchmarks
main 25f5ace... main / 25f5ace...
bench_linux/PSE 0.0685 G allocs: 4.62 GB 0.068 G allocs: 4.6 GB 1
bench_linux/PSE_assign_outputs_broadcast_exact_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_broadcast_exact_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_broadcast_exact_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_columns_19columns_exact_1000 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_columns_2columns_exact_10 5 allocs: 0.297 kB 5 allocs: 0.297 kB 1
bench_linux/PSE_assign_outputs_columns_2columns_exact_1000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_columns_2columns_exact_10000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_columns_2columns_permuted_10 5 allocs: 0.297 kB 5 allocs: 0.297 kB 1
bench_linux/PSE_assign_outputs_columns_2columns_permuted_1000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_columns_2columns_permuted_10000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_columns_7columns_exact_1000 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_columns_exact_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_columns_exact_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_columns_exact_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_columns_heterogeneous_exact_10 23 allocs: 0.578 kB 23 allocs: 0.578 kB 1
bench_linux/PSE_assign_outputs_columns_heterogeneous_exact_1000 2 k allocs: 31.5 kB 2 k allocs: 31.5 kB 1
bench_linux/PSE_assign_outputs_columns_heterogeneous_exact_10000 20 k allocs: 0.305 MB 20 k allocs: 0.305 MB 1
bench_linux/PSE_assign_outputs_columns_permuted_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_columns_permuted_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_columns_permuted_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_control_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_control_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_control_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_ref_loop_2columns_exact_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_ref_loop_2columns_exact_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_ref_loop_2columns_exact_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_ref_loop_exact_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_ref_loop_exact_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_ref_loop_exact_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_ref_loop_heterogeneous_exact_10 13 allocs: 0.422 kB 13 allocs: 0.422 kB 1
bench_linux/PSE_assign_outputs_ref_loop_heterogeneous_exact_1000 1 k allocs: 15.9 kB 1 k allocs: 15.9 kB 1
bench_linux/PSE_assign_outputs_ref_loop_heterogeneous_exact_10000 10 k allocs: 0.153 MB 10 k allocs: 0.153 MB 1
bench_linux/PSE_assign_outputs_table_2columns_exact_10 5 allocs: 0.297 kB 5 allocs: 0.297 kB 1
bench_linux/PSE_assign_outputs_table_2columns_exact_1000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_table_2columns_exact_10000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_table_2columns_permuted_10 5 allocs: 0.297 kB 5 allocs: 0.297 kB 1
bench_linux/PSE_assign_outputs_table_2columns_permuted_1000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_table_2columns_permuted_10000 6 allocs: 0.312 kB 6 allocs: 0.312 kB 1
bench_linux/PSE_assign_outputs_table_exact_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_table_exact_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_table_exact_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_table_permuted_10 3 allocs: 0.266 kB 3 allocs: 0.266 kB 1
bench_linux/PSE_assign_outputs_table_permuted_1000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_assign_outputs_table_permuted_10000 4 allocs: 0.281 kB 4 allocs: 0.281 kB 1
bench_linux/PSE_bound_many_input_steps_1000 0.3 k allocs: 26.6 kB 0.3 k allocs: 26.6 kB 1
bench_linux/PSE_bound_many_sum_1000 2 allocs: 32 B 2 allocs: 32 B 1
bench_linux/PSE_bound_many_sum_100000 2 allocs: 32 B 2 allocs: 32 B 1
bench_linux/PSE_bound_objectref_sum_1000 1 k allocs: 15.6 kB 1 k allocs: 15.6 kB 1
bench_linux/PSE_bound_objectref_sum_100000 0.1 M allocs: 1.53 MB 0.1 M allocs: 1.53 MB 1
bench_linux/PSE_call_binding_signature_4096 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_compiled_hard_call_heterogeneous 1.78 k allocs: 0.132 MB 1.73 k allocs: 0.13 MB 1.01
bench_linux/PSE_compiled_hard_call_many 0.163 M allocs: 7.82 MB 0.144 M allocs: 7.39 MB 1.06
bench_linux/PSE_compiled_hard_call_nested 2.02 k allocs: 0.15 MB 1.95 k allocs: 0.147 MB 1.02
bench_linux/PSE_compiled_hard_call_published 1.53 k allocs: 0.114 MB 1.48 k allocs: 0.111 MB 1.03
bench_linux/PSE_compiled_hard_call_repeated 1.53 k allocs: 0.114 MB 1.48 k allocs: 0.111 MB 1.03
bench_linux/PSE_compiled_hard_call_sampled_environment 1.59 k allocs: 0.116 MB 1.53 k allocs: 0.113 MB 1.02
bench_linux/PSE_compiled_hard_call_singular 1.53 k allocs: 0.114 MB 1.48 k allocs: 0.111 MB 1.03
bench_linux/PSE_distributed_assign_broadcast_10 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_distributed_assign_broadcast_1000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_broadcast_10000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_columns_10 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_distributed_assign_columns_1000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_columns_10000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_exact_10 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_distributed_assign_exact_1000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_exact_10000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_exact_100000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_heterogeneous_10 13 allocs: 0.203 kB 13 allocs: 0.203 kB 1
bench_linux/PSE_distributed_assign_heterogeneous_1000 1.33 k allocs: 20.8 kB 1.33 k allocs: 20.8 kB 1
bench_linux/PSE_distributed_assign_heterogeneous_10000 13.3 k allocs: 0.203 MB 13.3 k allocs: 0.203 MB 1
bench_linux/PSE_distributed_assign_permuted_10 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_distributed_assign_permuted_1000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_permuted_10000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_permuted_100000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_sparse_10 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_distributed_assign_sparse_1000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_sparse_10000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_status_10 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_distributed_assign_status_1000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_assign_status_10000 1 allocs: 16 B 1 allocs: 16 B 1
bench_linux/PSE_distributed_compile_active_1000 0.0515 M allocs: 2.35 MB 0.0449 M allocs: 2.21 MB 1.06
bench_linux/PSE_distributed_compile_none_1000 0.442 k allocs: 26.3 kB 0.423 k allocs: 25.4 kB 1.04
bench_linux/PSE_distributed_compile_permutation_1000 13 allocs: 0.0413 MB 13 allocs: 0.0413 MB 1
bench_linux/PSE_distributed_lifecycle_add_1000 30.3 k allocs: 1.41 MB 23.6 k allocs: 1.27 MB 1.11
bench_linux/PSE_distributed_mapping_refresh_10 9 allocs: 0.938 kB 9 allocs: 0.938 kB 1
bench_linux/PSE_distributed_mapping_refresh_1000 14 allocs: 0.0414 MB 14 allocs: 0.0414 MB 1
bench_linux/PSE_distributed_mapping_refresh_10000 14 allocs: 0.344 MB 14 allocs: 0.344 MB 1
bench_linux/PSE_hard_calls_dense 1.59 M allocs: 0.159 GB 1.57 M allocs: 0.159 GB 1
bench_linux/PSE_hard_calls_sparse 0.2 M allocs: 10.2 MB 0.187 M allocs: 9.89 MB 1.03
bench_linux/PSE_hard_calls_zero 0.222 M allocs: 11.5 MB 0.209 M allocs: 11.2 MB 1.03
bench_linux/PSE_immutable_scenario_all 1.17 k allocs: 0.738 MB 1.17 k allocs: 0.738 MB 1
bench_linux/PSE_immutable_scenario_none 0.15 k allocs: 13.3 kB 0.15 k allocs: 13.3 kB 1
bench_linux/PSE_immutable_scenario_requests 1.17 k allocs: 0.738 MB 1.17 k allocs: 0.738 MB 1
bench_linux/PSE_lifecycle_immediate_hard_call 16.1 k allocs: 1.72 MB 16.1 k allocs: 1.72 MB 1
bench_linux/PSE_lifecycle_large 10.9 k allocs: 0.955 MB 10.9 k allocs: 0.955 MB 1
bench_linux/PSE_lifecycle_small 0.843 k allocs: 0.044 MB 0.843 k allocs: 0.044 MB 1
bench_linux/PSE_many_cadence_schedule 14.3 k allocs: 1.24 MB 14.3 k allocs: 1.24 MB 1
bench_linux/PSE_multirate_no_output_run 3.06 M allocs: 0.189 GB 2.97 M allocs: 0.187 GB 1.01
bench_linux/PSE_multirate_output_request_run 3.17 M allocs: 0.213 GB 3.04 M allocs: 0.21 GB 1.01
bench_linux/PSE_multirate_retain_all_run 3.06 M allocs: 0.21 GB 2.96 M allocs: 0.208 GB 1.01
bench_linux/PSE_objectref_sum_1000 1 k allocs: 15.6 kB 1 k allocs: 15.6 kB 1
bench_linux/PSE_objectref_sum_100000 0.1 M allocs: 1.53 MB 0.1 M allocs: 1.53 MB 1
bench_linux/PSE_organ_adaptation_1024 0.0414 M allocs: 2.17 MB 0.0414 M allocs: 2.17 MB 1
bench_linux/PSE_organ_adaptation_256 10.6 k allocs: 0.553 MB 10.6 k allocs: 0.553 MB 1
bench_linux/PSE_organ_adaptation_32 1.58 k allocs: 0.066 MB 1.58 k allocs: 0.066 MB 1
bench_linux/PSE_organ_add_1024 0.074 k allocs: 3.21 kB 0.074 k allocs: 3.21 kB 1
bench_linux/PSE_organ_add_256 0.073 k allocs: 3.2 kB 0.073 k allocs: 3.2 kB 1
bench_linux/PSE_organ_add_32 0.075 k allocs: 5.48 kB 0.075 k allocs: 5.48 kB 1
bench_linux/PSE_organ_add_continue_1024 1.58 k allocs: 0.122 MB 1.58 k allocs: 0.122 MB 1
bench_linux/PSE_organ_add_continue_256 0.806 k allocs: 0.051 MB 0.806 k allocs: 0.051 MB 1
bench_linux/PSE_organ_add_continue_32 0.578 k allocs: 0.0327 MB 0.578 k allocs: 0.0327 MB 1
bench_linux/PSE_organ_add_refresh_1024 0.402 k allocs: 20 kB 0.402 k allocs: 20 kB 1
bench_linux/PSE_organ_add_refresh_256 0.398 k allocs: 20 kB 0.398 k allocs: 20 kB 1
bench_linux/PSE_organ_add_refresh_32 0.397 k allocs: 22.2 kB 0.397 k allocs: 22.2 kB 1
bench_linux/PSE_organ_refresh_1024 0.329 k allocs: 16.8 kB 0.329 k allocs: 16.8 kB 1
bench_linux/PSE_organ_refresh_256 0.325 k allocs: 16.8 kB 0.325 k allocs: 16.8 kB 1
bench_linux/PSE_organ_refresh_32 0.322 k allocs: 16.7 kB 0.322 k allocs: 16.7 kB 1
bench_linux/PSE_organ_status_recipe_refresh_1024 2.15 k allocs: 0.141 MB 2.15 k allocs: 0.141 MB 1
bench_linux/PSE_organ_status_recipe_refresh_256 2.15 k allocs: 0.135 MB 2.15 k allocs: 0.135 MB 1
bench_linux/PSE_organ_status_recipe_refresh_32 2.15 k allocs: 0.133 MB 2.15 k allocs: 0.133 MB 1
bench_linux/PSE_refvector_sum_1000 2 allocs: 32 B 2 allocs: 32 B 1
bench_linux/PSE_refvector_sum_100000 2 allocs: 32 B 2 allocs: 32 B 1
bench_linux/PSE_selector_subtree_root_2048 0.0529 M allocs: 1.38 MB 8.26 k allocs: 0.441 MB 3.14
bench_linux/PSE_selector_subtree_tip_2048 14 allocs: 0.375 kB 20 allocs: 0.609 kB 0.615
bench_linux/PSE_status_many_input_steps_1000 0.3 k allocs: 26.6 kB 0.3 k allocs: 26.6 kB 1
bench_linux/PSE_status_read_write 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_status_registry_lookup_1024 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_status_registry_lookup_256 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_status_registry_lookup_32 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_status_registry_sweep_1024 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_status_registry_sweep_256 0 allocs: 0 B 0 allocs: 0 B
bench_linux/PSE_status_registry_sweep_32 0 allocs: 0 B 0 allocs: 0 B
time_to_load 0.149 k allocs: 11.1 kB 0.149 k allocs: 11.1 kB 1

@VEZY
VEZY merged commit 389b740 into main Oct 15, 2026
15 checks passed
@VEZY
VEZY deleted the codex/adaptive-subtree-selectors branch October 15, 2026 15:03
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.

1 participant