Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

lazily Benchmark Results

Generated benchmark data for the lazily reactive primitives library.

Benchmark Results

Generated for package lazily version 0.12.2.

Environment: rustc 1.96.0 (ac68faa20 2026-05-25) on x86_64-unknown-linux-gnu.

Refresh command:

python3 scripts/update-benchmark-results.py

Regression workflow:

cargo bench --features instrumentation -- --save-baseline before
# apply the performance patch
cargo bench --features instrumentation -- --baseline before
python3 scripts/update-benchmark-results.py --no-run

Regression budgets enforced by python3 scripts/update-benchmark-results.py --check:

ProfileMax lock acquisitionsSite lock budgets
thread_safe_set_cell_invalidation_independent_slot_contention_16192set_cell_invalidation<=0, dependency_edge<=16, get_refresh<=32, publish<=32
thread_safe_set_cell_invalidation_batched_write_bursts_16900other<=800, set_cell_invalidation<=16, dependency_edge<=64, get_refresh<=2, publish<=2
thread_safe_contention_same_slot_write_read_161000get_refresh<=160, publish<=256, in_flight_wait<=700, set_cell_invalidation<=180
thread_safe_contention_independent_slots_161100other<=450, get_refresh<=64, publish<=320, dependency_edge<=16, set_cell_invalidation<=300
thread_safe_contention_read_mostly_waiters_16256get_refresh<=128, publish<=64, in_flight_wait<=96
thread_safe_contention_batched_write_bursts_16950other<=800, get_refresh<=128, dependency_edge<=64, set_cell_invalidation<=16, publish<=64, in_flight_wait<=64
thread_safe_effect_contention_queue_coalescing_162600other<=900, dependency_edge<=1600, set_cell_invalidation<=16, get_refresh<=64, publish<=0
thread_safe_effect_contention_cleanup_execution_161300other<=450, dependency_edge<=700, set_cell_invalidation<=256, get_refresh<=0, publish<=0
thread_safe_effect_contention_batch_flush_161500other<=1300, get_refresh<=32, dependency_edge<=96, set_cell_invalidation<=16, publish<=32

Budgets use deterministic lock acquisition counts instead of elapsed wait/hold time.

Synchronization strategy adoption gate:

StrategyStatusRequired throughput evidenceRequired p50/p95 latency evidenceLock-site and safety gate
current_std_mutex_condvarbaselinethread_safe_contention and thread_safe_effect_contention at 8/16 workersp50/p95 latency for same-slot, read-mostly, batch, and effect-heavy casesmust stay within current lock-site budgets and Loom safety coverage
narrower_condvar_wakeupsadopted for per-slot recompute waiterssame-slot write/read and read-mostly waiter throughput at 8/16 workersp50/p95 latency for waiter wakeup handoff and stale-completion retrymust not regress effect queue, cleanup, or batch flush budgets
parking_lot_style_parkingcandidate onlysame contention matrix measured against current_std_mutex_condvarp50/p95 latency for parking/unparking under 8/16 workersrequires no worse lock-site budgets plus a deadlock/starvation model
targeted_cascandidate onlyfresh cached reads and independent-slot throughput at 8/16 workersp50/p95 latency for revision validation fallback and publish racesrequires unchanged effect/batch/disposal budgets plus Loom/Shuttle proof

Candidates do not replace the current strategy before the same run reports throughput, p50/p95 latency, and lock-site budgets for the required 8/16-worker cases.

Required latency evidence uses Criterion sample per-iteration timing.

Watch-item A/B follow-up:

Watch itemBaseline/current refsFocused commandControlled rerun resultDecision
cached ThreadSafeContext read latencya8b6fc3 vs c917401cargo bench --features instrumentation --bench context -- cached_reads/thread_safe_context73.48 ns baseline vs 73.20 ns current on warm-cache repeatno tuning; the archived 56.5 ns row did not reproduce under controlled A/B
effect cleanup contention at 16 workersa8b6fc3 vs c917401cargo bench --features instrumentation --bench context -- thread_safe_effect_contention/cleanup_execution/162.31 ms baseline vs 2.43 ms current on warm-cache repeat with overlapping CIskeep watching; Criterion reported no statistically significant change
GroupCasep50p95Samples
thread_safe_contentionsame_slot_write_read / 82.578 ms2.746 ms10
thread_safe_contentionsame_slot_write_read / 167.185 ms8.642 ms10
thread_safe_contentionindependent_slots / 81.133 ms1.220 ms10
thread_safe_contentionindependent_slots / 162.885 ms3.035 ms10
thread_safe_contentionread_mostly_waiters / 8533.466 us578.630 us10
thread_safe_contentionread_mostly_waiters / 161.105 ms1.186 ms10
thread_safe_contentionbatched_write_bursts / 82.734 ms3.132 ms10
thread_safe_contentionbatched_write_bursts / 165.097 ms5.433 ms10
thread_safe_effect_contentionqueue_coalescing / 81.464 ms1.739 ms10
thread_safe_effect_contentionqueue_coalescing / 164.039 ms4.208 ms10
thread_safe_effect_contentioncleanup_execution / 81.457 ms1.719 ms10
thread_safe_effect_contentioncleanup_execution / 163.948 ms4.323 ms10
thread_safe_effect_contentionbatch_flush / 82.646 ms2.929 ms10
thread_safe_effect_contentionbatch_flush / 167.896 ms8.064 ms10
thread_safe_graph_propagationfan_out_eager_validation / 83.538 ms3.629 ms10
thread_safe_graph_propagationfan_out_eager_validation / 166.130 ms6.357 ms10
thread_safe_graph_propagationfan_out_lazy_dirty_epochs / 82.551 ms2.671 ms10
thread_safe_graph_propagationfan_out_lazy_dirty_epochs / 164.442 ms4.535 ms10
thread_safe_graph_propagationfan_in_lazy_dirty_epochs / 8574.260 us585.218 us10
thread_safe_graph_propagationfan_in_lazy_dirty_epochs / 161.126 ms1.138 ms10
thread_safe_graph_propagationfan_in_batched_flush / 81.167 ms1.287 ms10
thread_safe_graph_propagationfan_in_batched_flush / 162.271 ms2.452 ms10

Criterion estimates are local mean wall-clock time per iteration.

GroupCaseMean95% CI
cached_readscontext8.027 ns7.987 ns - 8.066 ns
cached_readsthread_safe_context65.223 ns64.895 ns - 65.584 ns
cold_first_getcontext80.054 ns77.778 ns - 82.208 ns
cold_first_getthread_safe_context990.971 ns959.974 ns - 1.021 us
dependency_fan_outcontext / 323.107 us2.962 us - 3.248 us
dependency_fan_outcontext / 25645.763 us43.643 us - 48.510 us
dependency_fan_outthread_safe_context / 3220.950 us20.551 us - 21.347 us
dependency_fan_outthread_safe_context / 256160.588 us159.203 us - 162.024 us
set_cell_invalidationhigh_fan_out / 51292.241 us89.998 us - 94.223 us
set_cell_invalidationsame_slot_contention / 138.338 us37.310 us - 39.419 us
set_cell_invalidationsame_slot_contention / 280.472 us78.918 us - 81.907 us
set_cell_invalidationsame_slot_contention / 4186.897 us180.693 us - 192.872 us
set_cell_invalidationsame_slot_contention / 8541.804 us517.595 us - 568.932 us
set_cell_invalidationsame_slot_contention / 161.759 ms1.718 ms - 1.794 ms
set_cell_invalidationindependent_slot_contention / 139.527 us38.588 us - 40.454 us
set_cell_invalidationindependent_slot_contention / 273.353 us71.989 us - 74.760 us
set_cell_invalidationindependent_slot_contention / 4128.280 us126.976 us - 129.514 us
set_cell_invalidationindependent_slot_contention / 8281.716 us269.854 us - 293.557 us
set_cell_invalidationindependent_slot_contention / 16612.042 us607.064 us - 617.024 us
set_cell_invalidationbatched_write_bursts / 1128.103 us126.066 us - 130.111 us
set_cell_invalidationbatched_write_bursts / 2226.325 us218.580 us - 232.553 us
set_cell_invalidationbatched_write_bursts / 4480.877 us463.297 us - 496.610 us
set_cell_invalidationbatched_write_bursts / 81.401 ms1.353 ms - 1.449 ms
set_cell_invalidationbatched_write_bursts / 164.002 ms3.922 ms - 4.075 ms
memo_equality_suppressioncontext1.881 us1.758 us - 2.005 us
memo_equality_suppressionthread_safe_context33.002 us32.645 us - 33.355 us
effect_flushingcontext47.561 ns47.315 ns - 47.835 ns
effect_flushingthread_safe_context919.973 ns914.308 ns - 926.589 ns
batch_stormscontext / 642.764 us2.744 us - 2.786 us
batch_stormsthread_safe_context / 647.082 us6.899 us - 7.306 us
thread_safe_contentionsame_slot_write_read / 198.686 us96.377 us - 100.859 us
thread_safe_contentionsame_slot_write_read / 2266.923 us261.168 us - 272.455 us
thread_safe_contentionsame_slot_write_read / 4871.034 us824.425 us - 916.400 us
thread_safe_contentionsame_slot_write_read / 82.558 ms2.488 ms - 2.625 ms
thread_safe_contentionsame_slot_write_read / 167.411 ms7.144 ms - 7.749 ms
thread_safe_contentionindependent_slots / 1101.937 us100.782 us - 102.937 us
thread_safe_contentionindependent_slots / 2212.770 us206.378 us - 217.797 us
thread_safe_contentionindependent_slots / 4463.904 us453.067 us - 474.423 us
thread_safe_contentionindependent_slots / 81.133 ms1.109 ms - 1.159 ms
thread_safe_contentionindependent_slots / 162.850 ms2.739 ms - 2.949 ms
thread_safe_contentionread_mostly_waiters / 1103.037 us101.347 us - 104.750 us
thread_safe_contentionread_mostly_waiters / 2138.765 us134.847 us - 142.827 us
thread_safe_contentionread_mostly_waiters / 4277.379 us271.246 us - 282.068 us
thread_safe_contentionread_mostly_waiters / 8522.464 us489.359 us - 552.208 us
thread_safe_contentionread_mostly_waiters / 161.116 ms1.097 ms - 1.136 ms
thread_safe_contentionbatched_write_bursts / 1208.558 us206.766 us - 210.767 us
thread_safe_contentionbatched_write_bursts / 2547.941 us521.314 us - 575.389 us
thread_safe_contentionbatched_write_bursts / 41.467 ms1.454 ms - 1.480 ms
thread_safe_contentionbatched_write_bursts / 82.796 ms2.716 ms - 2.890 ms
thread_safe_contentionbatched_write_bursts / 164.970 ms4.733 ms - 5.184 ms
thread_safe_effect_contentionqueue_coalescing / 81.491 ms1.437 ms - 1.558 ms
thread_safe_effect_contentionqueue_coalescing / 164.055 ms4.013 ms - 4.102 ms
thread_safe_effect_contentioncleanup_execution / 81.498 ms1.445 ms - 1.561 ms
thread_safe_effect_contentioncleanup_execution / 164.042 ms3.893 ms - 4.185 ms
thread_safe_effect_contentionbatch_flush / 82.689 ms2.607 ms - 2.771 ms
thread_safe_effect_contentionbatch_flush / 167.856 ms7.715 ms - 7.961 ms
thread_safe_graph_propagationfan_out_eager_validation / 83.558 ms3.531 ms - 3.587 ms
thread_safe_graph_propagationfan_out_eager_validation / 166.154 ms6.104 ms - 6.211 ms
thread_safe_graph_propagationfan_out_lazy_dirty_epochs / 82.544 ms2.503 ms - 2.584 ms
thread_safe_graph_propagationfan_out_lazy_dirty_epochs / 164.451 ms4.427 ms - 4.477 ms
thread_safe_graph_propagationfan_in_lazy_dirty_epochs / 8572.971 us567.279 us - 578.239 us
thread_safe_graph_propagationfan_in_lazy_dirty_epochs / 161.109 ms1.074 ms - 1.130 ms
thread_safe_graph_propagationfan_in_batched_flush / 81.169 ms1.144 ms - 1.201 ms
thread_safe_graph_propagationfan_in_batched_flush / 162.296 ms2.257 ms - 2.341 ms
profile_instrumentationcontext_snapshot267.600 ns265.902 ns - 269.343 ns
profile_instrumentationthread_safe_snapshot295.465 us294.338 us - 296.488 us
async_cached_resolveasync_context4.005 us3.829 us - 4.197 us
async_cached_resolvesync_context_baseline73.063 ns69.741 ns - 77.406 ns
async_cached_resolvesync_get11.537 ns11.488 ns - 11.585 ns
async_cached_resolvethread_safe_context_baseline1.394 us1.388 us - 1.399 us
async_cold_resolveasync_context4.261 us4.114 us - 4.397 us
async_cold_resolvesync_context_baseline83.178 ns79.646 ns - 86.312 ns
async_cold_resolvethread_safe_context_baseline1.010 us983.439 ns - 1.036 us
async_invalidation_throughputasync_context245.023 us232.026 us - 258.919 us
async_invalidation_throughputsync_context_baseline2.785 us2.763 us - 2.808 us
async_invalidation_throughputthread_safe_context_baseline39.314 us39.079 us - 39.593 us
async_cancellation_throughputasync_invalidate_in_flight77.176 us64.769 us - 87.137 us
async_concurrent_contentionasync_context / 171.400 us70.290 us - 72.484 us
async_concurrent_contentionasync_context / 4391.647 us375.605 us - 406.235 us
async_concurrent_contentionasync_context / 161.939 ms1.834 ms - 2.040 ms
async_concurrent_contentionthread_safe_context_baseline / 160.390 us58.969 us - 61.565 us
async_concurrent_contentionthread_safe_context_baseline / 4509.481 us496.452 us - 522.465 us
async_concurrent_contentionthread_safe_context_baseline / 163.494 ms3.408 ms - 3.553 ms
async_effect_throughputasync_context188.121 ms187.959 ms - 188.267 ms
async_batch_throughputasync_context76.304 us73.323 us - 79.503 us
async_batch_throughputsync_context_baseline10.755 us10.676 us - 10.843 us
tokio_sync_cached_readsingle_task1.488 us1.476 us - 1.501 us
tokio_sync_cached_readspawn_read5.051 us4.882 us - 5.218 us
tokio_sync_cold_first_getsingle_task1.425 us1.414 us - 1.435 us
tokio_sync_cold_first_getspawn_compute5.226 us4.983 us - 5.462 us
tokio_sync_invalidationsingle_task39.148 us38.805 us - 39.520 us
tokio_sync_concurrent_contentionsame_slot_write_read / 143.792 us43.051 us - 44.677 us
tokio_sync_concurrent_contentionsame_slot_write_read / 4402.701 us389.818 us - 416.472 us
tokio_sync_concurrent_contentionsame_slot_write_read / 163.734 ms3.570 ms - 3.882 ms
tokio_sync_concurrent_contentionindependent_slots / 144.150 us43.337 us - 44.963 us
tokio_sync_concurrent_contentionindependent_slots / 4254.247 us241.953 us - 268.158 us
tokio_sync_concurrent_contentionindependent_slots / 161.460 ms1.401 ms - 1.518 ms
tokio_sync_batchspawn_batch43.228 us42.846 us - 43.603 us
tokio_sync_effectsingle_task10.087 ms10.083 ms - 10.093 ms
typed_cache_readscontext_cell2.513 ns2.497 ns - 2.530 ns
typed_cache_readscontext_rc_cell2.771 ns2.754 ns - 2.788 ns
typed_cache_readscontext_rc_slot8.245 ns8.197 ns - 8.297 ns
typed_cache_readscontext_slot7.961 ns7.925 ns - 7.998 ns
typed_cache_readsthread_safe_cell25.089 ns24.867 ns - 25.314 ns
typed_cache_readsthread_safe_slot64.338 ns64.048 ns - 64.615 ns

Instrumentation snapshots are single local profile runs captured by examples/instrumentation_profile.rs.

ProfileAllocRecomputesDuplicate recomputesEdges +Edges -Effect pushesMax queueLock acquisitionsLock waitLock holdSidecar frontiersSidecar dirty marksSidecar fallbacksDirty epochs
context_memo_effect430412100.000 ns0.000 ns0000
context_fan_out_323364064320000.000 ns0.000 ns0000
context_batch_storm_646500128642100.000 ns0.000 ns0000
thread_safe_first_get_221010001119.240 us18.020 us0000
thread_safe_set_cell_invalidation_high_fan_out_512000000000.000 ns0.000 ns15120512
thread_safe_set_cell_invalidation_same_slot_contention_121010008290.000 ns2.880 us1616016
thread_safe_set_cell_invalidation_same_slot_contention_221010008280.000 ns1.170 us3232032
thread_safe_set_cell_invalidation_same_slot_contention_421010008280.000 ns1.060 us6464064
thread_safe_set_cell_invalidation_same_slot_contention_821010008280.000 ns1.110 us1281280128
thread_safe_set_cell_invalidation_same_slot_contention_1621010008380.000 ns5.080 us2562560256
thread_safe_set_cell_invalidation_independent_slot_contention_121010008380.000 ns7.940 us1515015
thread_safe_set_cell_invalidation_independent_slot_contention_2420200016610.000 ns2.410 us3131031
thread_safe_set_cell_invalidation_independent_slot_contention_48404000321.140 us4.920 us6363063
thread_safe_set_cell_invalidation_independent_slot_contention_816808000642.270 us9.930 us1271270127
thread_safe_set_cell_invalidation_independent_slot_contention_1632160160001284.570 us18.810 us2552550255
thread_safe_set_cell_invalidation_batched_write_bursts_15104000973.650 us60.860 us00015
thread_safe_set_cell_invalidation_batched_write_bursts_29108000159193.830 us106.741 us00021
thread_safe_set_cell_invalidation_batched_write_bursts_4171016000199439.375 us150.901 us0006
thread_safe_set_cell_invalidation_batched_write_bursts_83310320003692.189 ms231.381 us0004
thread_safe_set_cell_invalidation_batched_write_bursts_166510640007159.403 ms432.702 us0002
thread_safe_contention_same_slot_write_read_121701000241.080 us17.510 us1616016
thread_safe_contention_same_slot_write_read_2228010007716.610 us46.410 us2323932
thread_safe_contention_same_slot_write_read_425201000226127.742 us107.120 us33333164
thread_safe_contention_same_slot_write_read_8211101000449207.906 us200.263 us707058128
thread_safe_contention_same_slot_write_read_162211010008621.132 ms429.864 us138138118256
thread_safe_contention_independent_slots_12160100023980.000 ns15.180 us1515015
thread_safe_contention_independent_slots_2433020008919.151 us39.491 us17171431
thread_safe_contention_independent_slots_486704000199416.563 us95.721 us25253863
thread_safe_contention_independent_slots_816135080004654.256 ms296.231 us1111116127
thread_safe_contention_independent_slots_163227101600093919.906 ms630.554 us99246255
thread_safe_contention_read_mostly_waiters_121701000241.110 us17.340 us1616016
thread_safe_contention_read_mostly_waiters_221701000241.030 us14.530 us1616016
thread_safe_contention_read_mostly_waiters_421701000412.500 us26.930 us1616016
thread_safe_contention_read_mostly_waiters_8217010005922.950 us31.790 us1616016
thread_safe_contention_read_mostly_waiters_162170100083217.170 us114.471 us1616016
thread_safe_contention_batched_write_bursts_1516040001124.490 us64.750 us00015
thread_safe_contention_batched_write_bursts_29210800018866.861 us109.832 us00020
thread_safe_contention_batched_write_bursts_41737016000389432.502 us282.893 us00038
thread_safe_contention_batched_write_bursts_833100320004002.433 ms298.504 us0009
thread_safe_contention_batched_write_bursts_1665306400071710.003 ms462.403 us0002
thread_safe_effect_contention_queue_coalescing_83300320814062.018 ms269.084 us0000
thread_safe_effect_contention_queue_coalescing_1665006401017759.282 ms531.114 us0000
thread_safe_effect_contention_cleanup_execution_8900883214081.845 ms190.321 us001270
thread_safe_effect_contention_cleanup_execution_16170016163216967.538 ms305.824 us002550
thread_safe_effect_contention_batch_flush_83430330316342.638 ms269.453 us0002
thread_safe_effect_contention_batch_flush_16662065031123921.843 ms617.275 us0001
thread_safe_graph_propagation_fan_out_eager_validation_8345490640491113224.084 ms6.033 ms103201184096
thread_safe_graph_propagation_fan_out_eager_validation_163455506404911380117.009 ms11.557 ms175442398192
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_8336403200022610.090 us76.281 us128409604096
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_1633640320002269.670 us69.370 us256819208192
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_8656606400032811.840 us105.540 us5085400572
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_16129130012800064827.661 us197.172 us1020108401148
thread_safe_graph_propagation_fan_in_batched_flush_866660650316052.600 ms397.774 us00073
thread_safe_graph_propagation_fan_in_batched_flush_16130135012905113197.690 ms744.236 us000170

ThreadSafe lock attribution for contention profiles:

ProfileSiteLock acquisitionsLock waitLock hold
thread_safe_set_cell_invalidation_same_slot_contention_1other4110.000 ns1.830 us
thread_safe_set_cell_invalidation_same_slot_contention_1get_refresh290.000 ns230.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_1dependency_edge150.000 ns480.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_1publish140.000 ns340.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_2other4110.000 ns240.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_2get_refresh2100.000 ns200.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_2dependency_edge130.000 ns400.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_2publish140.000 ns330.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_4other4120.000 ns210.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_4get_refresh290.000 ns160.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_4dependency_edge130.000 ns370.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_4publish140.000 ns320.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_8other4120.000 ns240.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_8get_refresh290.000 ns200.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_8dependency_edge120.000 ns340.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_8publish150.000 ns330.000 ns
thread_safe_set_cell_invalidation_same_slot_contention_16other4180.000 ns1.320 us
thread_safe_set_cell_invalidation_same_slot_contention_16get_refresh2130.000 ns1.360 us
thread_safe_set_cell_invalidation_same_slot_contention_16dependency_edge120.000 ns1.190 us
thread_safe_set_cell_invalidation_same_slot_contention_16publish150.000 ns1.210 us
thread_safe_set_cell_invalidation_independent_slot_contention_1other4180.000 ns2.550 us
thread_safe_set_cell_invalidation_independent_slot_contention_1get_refresh2130.000 ns2.340 us
thread_safe_set_cell_invalidation_independent_slot_contention_1dependency_edge120.000 ns1.670 us
thread_safe_set_cell_invalidation_independent_slot_contention_1publish150.000 ns1.380 us
thread_safe_set_cell_invalidation_independent_slot_contention_2other8250.000 ns590.000 ns
thread_safe_set_cell_invalidation_independent_slot_contention_2get_refresh4220.000 ns410.000 ns
thread_safe_set_cell_invalidation_independent_slot_contention_2dependency_edge250.000 ns710.000 ns
thread_safe_set_cell_invalidation_independent_slot_contention_2publish290.000 ns700.000 ns
thread_safe_set_cell_invalidation_independent_slot_contention_4other16510.000 ns1.500 us
thread_safe_set_cell_invalidation_independent_slot_contention_4get_refresh8340.000 ns680.000 ns
thread_safe_set_cell_invalidation_independent_slot_contention_4dependency_edge4100.000 ns1.330 us
thread_safe_set_cell_invalidation_independent_slot_contention_4publish4190.000 ns1.410 us
thread_safe_set_cell_invalidation_independent_slot_contention_8other32950.000 ns3.330 us
thread_safe_set_cell_invalidation_independent_slot_contention_8get_refresh16680.000 ns1.260 us
thread_safe_set_cell_invalidation_independent_slot_contention_8dependency_edge8250.000 ns2.600 us
thread_safe_set_cell_invalidation_independent_slot_contention_8publish8390.000 ns2.740 us
thread_safe_set_cell_invalidation_independent_slot_contention_16other641.990 us5.380 us
thread_safe_set_cell_invalidation_independent_slot_contention_16get_refresh321.390 us2.460 us
thread_safe_set_cell_invalidation_independent_slot_contention_16dependency_edge16430.000 ns5.200 us
thread_safe_set_cell_invalidation_independent_slot_contention_16publish16760.000 ns5.770 us
thread_safe_set_cell_invalidation_batched_write_bursts_1other742.770 us15.940 us
thread_safe_set_cell_invalidation_batched_write_bursts_1get_refresh280.000 ns290.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_1dependency_edge4170.000 ns1.760 us
thread_safe_set_cell_invalidation_batched_write_bursts_1set_cell_invalidation16590.000 ns42.450 us
thread_safe_set_cell_invalidation_batched_write_bursts_1publish140.000 ns420.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_2other126186.900 us41.250 us
thread_safe_set_cell_invalidation_batched_write_bursts_2get_refresh280.000 ns180.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_2dependency_edge8340.000 ns6.010 us
thread_safe_set_cell_invalidation_batched_write_bursts_2set_cell_invalidation226.460 us58.951 us
thread_safe_set_cell_invalidation_batched_write_bursts_2publish150.000 ns350.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_4other174434.615 us99.261 us
thread_safe_set_cell_invalidation_batched_write_bursts_4get_refresh280.000 ns190.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_4dependency_edge16700.000 ns7.690 us
thread_safe_set_cell_invalidation_batched_write_bursts_4set_cell_invalidation63.930 us43.400 us
thread_safe_set_cell_invalidation_batched_write_bursts_4publish150.000 ns360.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_8other3302.187 ms199.591 us
thread_safe_set_cell_invalidation_batched_write_bursts_8get_refresh2130.000 ns1.410 us
thread_safe_set_cell_invalidation_batched_write_bursts_8dependency_edge321.600 us17.200 us
thread_safe_set_cell_invalidation_batched_write_bursts_8set_cell_invalidation4200.000 ns11.920 us
thread_safe_set_cell_invalidation_batched_write_bursts_8publish150.000 ns1.260 us
thread_safe_set_cell_invalidation_batched_write_bursts_16other6469.400 ms384.152 us
thread_safe_set_cell_invalidation_batched_write_bursts_16get_refresh290.000 ns280.000 ns
thread_safe_set_cell_invalidation_batched_write_bursts_16dependency_edge643.180 us34.280 us
thread_safe_set_cell_invalidation_batched_write_bursts_16set_cell_invalidation290.000 ns13.590 us
thread_safe_set_cell_invalidation_batched_write_bursts_16publish150.000 ns400.000 ns
thread_safe_contention_same_slot_write_read_1other4130.000 ns770.000 ns
thread_safe_contention_same_slot_write_read_1get_refresh2100.000 ns510.000 ns
thread_safe_contention_same_slot_write_read_1dependency_edge130.000 ns570.000 ns
thread_safe_contention_same_slot_write_read_1publish17820.000 ns15.660 us
thread_safe_contention_same_slot_write_read_2other223.030 us990.000 ns
thread_safe_contention_same_slot_write_read_2get_refresh290.000 ns190.000 ns
thread_safe_contention_same_slot_write_read_2dependency_edge130.000 ns360.000 ns
thread_safe_contention_same_slot_write_read_2set_cell_invalidation91.920 us13.920 us
thread_safe_contention_same_slot_write_read_2publish2811.540 us30.950 us
thread_safe_contention_same_slot_write_read_2in_flight_wait150.000 ns0.000 ns
thread_safe_contention_same_slot_write_read_4other6345.511 us2.670 us
thread_safe_contention_same_slot_write_read_4get_refresh280.000 ns150.000 ns
thread_safe_contention_same_slot_write_read_4dependency_edge130.000 ns330.000 ns
thread_safe_contention_same_slot_write_read_4set_cell_invalidation3130.140 us43.440 us
thread_safe_contention_same_slot_write_read_4publish5251.981 us60.530 us
thread_safe_contention_same_slot_write_read_4in_flight_wait770.000 ns0.000 ns
thread_safe_contention_same_slot_write_read_8other11762.331 us3.711 us
thread_safe_contention_same_slot_write_read_8get_refresh1212.790 us6.830 us
thread_safe_contention_same_slot_write_read_8dependency_edge120.000 ns350.000 ns
thread_safe_contention_same_slot_write_read_8set_cell_invalidation5870.113 us62.631 us
thread_safe_contention_same_slot_write_read_8publish11162.652 us126.741 us
thread_safe_contention_same_slot_write_read_8in_flight_wait1500.000 ns0.000 ns
thread_safe_contention_same_slot_write_read_16other229407.693 us8.420 us
thread_safe_contention_same_slot_write_read_16get_refresh1612.330 us5.900 us
thread_safe_contention_same_slot_write_read_16dependency_edge120.000 ns1.130 us
thread_safe_contention_same_slot_write_read_16set_cell_invalidation118558.902 us150.022 us
thread_safe_contention_same_slot_write_read_16publish211152.932 us264.392 us
thread_safe_contention_same_slot_write_read_16in_flight_wait2870.000 ns0.000 ns
thread_safe_contention_independent_slots_1other4140.000 ns1.130 us
thread_safe_contention_independent_slots_1get_refresh290.000 ns310.000 ns
thread_safe_contention_independent_slots_1dependency_edge120.000 ns1.180 us
thread_safe_contention_independent_slots_1publish16730.000 ns12.560 us
thread_safe_contention_independent_slots_2other362.640 us1.450 us
thread_safe_contention_independent_slots_2get_refresh4200.000 ns420.000 ns
thread_safe_contention_independent_slots_2dependency_edge250.000 ns710.000 ns
thread_safe_contention_independent_slots_2set_cell_invalidation147.690 us10.741 us
thread_safe_contention_independent_slots_2publish338.571 us26.170 us
thread_safe_contention_independent_slots_4other82103.730 us3.910 us
thread_safe_contention_independent_slots_4get_refresh8380.000 ns650.000 ns
thread_safe_contention_independent_slots_4dependency_edge4100.000 ns1.320 us
thread_safe_contention_independent_slots_4set_cell_invalidation38203.262 us32.581 us
thread_safe_contention_independent_slots_4publish67109.091 us57.260 us
thread_safe_contention_independent_slots_8other1901.107 ms10.290 us
thread_safe_contention_independent_slots_8get_refresh16740.000 ns1.310 us
thread_safe_contention_independent_slots_8dependency_edge8220.000 ns2.810 us
thread_safe_contention_independent_slots_8set_cell_invalidation1161.523 ms130.711 us
thread_safe_contention_independent_slots_8publish1351.625 ms151.110 us
thread_safe_contention_independent_slots_16other3745.514 ms20.750 us
thread_safe_contention_independent_slots_16get_refresh321.400 us2.970 us
thread_safe_contention_independent_slots_16dependency_edge16430.000 ns6.240 us
thread_safe_contention_independent_slots_16set_cell_invalidation2466.024 ms288.392 us
thread_safe_contention_independent_slots_16publish2718.367 ms312.202 us
thread_safe_contention_read_mostly_waiters_1other4130.000 ns1.430 us
thread_safe_contention_read_mostly_waiters_1get_refresh2140.000 ns880.000 ns
thread_safe_contention_read_mostly_waiters_1dependency_edge120.000 ns1.180 us
thread_safe_contention_read_mostly_waiters_1publish17820.000 ns13.850 us
thread_safe_contention_read_mostly_waiters_2other4130.000 ns310.000 ns
thread_safe_contention_read_mostly_waiters_2get_refresh290.000 ns180.000 ns
thread_safe_contention_read_mostly_waiters_2dependency_edge120.000 ns380.000 ns
thread_safe_contention_read_mostly_waiters_2publish17790.000 ns13.660 us
thread_safe_contention_read_mostly_waiters_4other4130.000 ns250.000 ns
thread_safe_contention_read_mostly_waiters_4get_refresh81.560 us2.200 us
thread_safe_contention_read_mostly_waiters_4dependency_edge120.000 ns360.000 ns
thread_safe_contention_read_mostly_waiters_4publish17790.000 ns24.120 us
thread_safe_contention_read_mostly_waiters_4in_flight_wait110.000 ns0.000 ns
thread_safe_contention_read_mostly_waiters_8other4150.000 ns390.000 ns
thread_safe_contention_read_mostly_waiters_8get_refresh1614.830 us5.350 us
thread_safe_contention_read_mostly_waiters_8dependency_edge130.000 ns360.000 ns
thread_safe_contention_read_mostly_waiters_8publish177.940 us25.690 us
thread_safe_contention_read_mostly_waiters_8in_flight_wait210.000 ns0.000 ns
thread_safe_contention_read_mostly_waiters_16other4180.000 ns1.330 us
thread_safe_contention_read_mostly_waiters_16get_refresh22211.850 us16.180 us
thread_safe_contention_read_mostly_waiters_16dependency_edge130.000 ns1.190 us
thread_safe_contention_read_mostly_waiters_16publish175.110 us95.771 us
thread_safe_contention_read_mostly_waiters_16in_flight_wait390.000 ns0.000 ns
thread_safe_contention_batched_write_bursts_1other742.790 us14.810 us
thread_safe_contention_batched_write_bursts_1get_refresh2110.000 ns340.000 ns
thread_safe_contention_batched_write_bursts_1dependency_edge4170.000 ns1.790 us
thread_safe_contention_batched_write_bursts_1set_cell_invalidation16670.000 ns29.360 us
thread_safe_contention_batched_write_bursts_1publish16750.000 ns18.450 us
thread_safe_contention_batched_write_bursts_2other12452.991 us31.280 us
thread_safe_contention_batched_write_bursts_2get_refresh290.000 ns180.000 ns
thread_safe_contention_batched_write_bursts_2dependency_edge8320.000 ns4.270 us
thread_safe_contention_batched_write_bursts_2set_cell_invalidation219.380 us44.482 us
thread_safe_contention_batched_write_bursts_2publish214.080 us29.620 us
thread_safe_contention_batched_write_bursts_2in_flight_wait120.000 ns0.000 ns
thread_safe_contention_batched_write_bursts_4other237388.651 us83.570 us
thread_safe_contention_batched_write_bursts_4get_refresh1032.921 us4.740 us
thread_safe_contention_batched_write_bursts_4dependency_edge16740.000 ns7.550 us
thread_safe_contention_batched_write_bursts_4set_cell_invalidation383.930 us94.652 us
thread_safe_contention_batched_write_bursts_4publish376.260 us92.381 us
thread_safe_contention_batched_write_bursts_4in_flight_wait510.000 ns0.000 ns
thread_safe_contention_batched_write_bursts_8other3402.431 ms199.842 us
thread_safe_contention_batched_write_bursts_8get_refresh290.000 ns390.000 ns
thread_safe_contention_batched_write_bursts_8dependency_edge321.560 us15.721 us
thread_safe_contention_batched_write_bursts_8set_cell_invalidation9480.000 ns49.211 us
thread_safe_contention_batched_write_bursts_8publish10540.000 ns33.340 us
thread_safe_contention_batched_write_bursts_8in_flight_wait70.000 ns0.000 ns
thread_safe_contention_batched_write_bursts_16other6469.999 ms389.373 us
thread_safe_contention_batched_write_bursts_16get_refresh2120.000 ns1.270 us
thread_safe_contention_batched_write_bursts_16dependency_edge643.040 us34.950 us
thread_safe_contention_batched_write_bursts_16set_cell_invalidation2110.000 ns17.680 us
thread_safe_contention_batched_write_bursts_16publish3150.000 ns19.130 us
thread_safe_effect_contention_queue_coalescing_8other3652.016 ms199.513 us
thread_safe_effect_contention_queue_coalescing_8dependency_edge321.420 us11.631 us
thread_safe_effect_contention_queue_coalescing_8set_cell_invalidation9520.000 ns57.940 us
thread_safe_effect_contention_queue_coalescing_16other7029.279 ms470.073 us
thread_safe_effect_contention_queue_coalescing_16dependency_edge642.810 us24.800 us
thread_safe_effect_contention_queue_coalescing_16set_cell_invalidation9440.000 ns36.241 us
thread_safe_effect_contention_cleanup_execution_8other265599.415 us62.861 us
thread_safe_effect_contention_cleanup_execution_8dependency_edge16800.000 ns11.120 us
thread_safe_effect_contention_cleanup_execution_8set_cell_invalidation1271.245 ms116.340 us
thread_safe_effect_contention_cleanup_execution_16other4093.289 ms93.061 us
thread_safe_effect_contention_cleanup_execution_16dependency_edge321.530 us13.520 us
thread_safe_effect_contention_cleanup_execution_16set_cell_invalidation2554.247 ms199.243 us
thread_safe_effect_contention_batch_flush_8other5942.636 ms226.842 us
thread_safe_effect_contention_batch_flush_8get_refresh2110.000 ns840.000 ns
thread_safe_effect_contention_batch_flush_8dependency_edge331.500 us17.470 us
thread_safe_effect_contention_batch_flush_8set_cell_invalidation2150.000 ns16.160 us
thread_safe_effect_contention_batch_flush_8publish3170.000 ns8.141 us
thread_safe_effect_contention_batch_flush_16other116921.839 ms558.475 us
thread_safe_effect_contention_batch_flush_16get_refresh2110.000 ns270.000 ns
thread_safe_effect_contention_batch_flush_16dependency_edge653.080 us35.400 us
thread_safe_effect_contention_batch_flush_16set_cell_invalidation160.000 ns12.710 us
thread_safe_effect_contention_batch_flush_16publish2100.000 ns10.420 us
thread_safe_graph_propagation_fan_out_eager_validation_8other3375.266 ms166.412 us
thread_safe_graph_propagation_fan_out_eager_validation_8get_refresh643.000 us5.140 us
thread_safe_graph_propagation_fan_out_eager_validation_8dependency_edge642.280 us29.920 us
thread_safe_graph_propagation_fan_out_eager_validation_8set_cell_invalidation11814.440 ms5.280 ms
thread_safe_graph_propagation_fan_out_eager_validation_8publish5494.373 ms552.165 us
thread_safe_graph_propagation_fan_out_eager_validation_16other45830.162 ms173.621 us
thread_safe_graph_propagation_fan_out_eager_validation_16get_refresh643.040 us5.550 us
thread_safe_graph_propagation_fan_out_eager_validation_16dependency_edge642.500 us30.240 us
thread_safe_graph_propagation_fan_out_eager_validation_16set_cell_invalidation23976.647 ms10.794 ms
thread_safe_graph_propagation_fan_out_eager_validation_16publish55510.195 ms553.344 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_8other663.290 us7.310 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_8get_refresh642.820 us5.830 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_8dependency_edge32900.000 ns18.280 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_8publish643.080 us44.861 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_16other662.760 us5.380 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_16get_refresh642.860 us5.660 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_16dependency_edge32880.000 ns18.490 us
thread_safe_graph_propagation_fan_out_lazy_dirty_epochs_16publish643.170 us39.840 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_8other1303.800 us9.170 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_8get_refresh683.620 us10.250 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_8dependency_edge642.440 us28.580 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_8publish661.980 us57.540 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_16other25812.270 us18.010 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_16get_refresh1326.440 us12.920 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_16dependency_edge1285.030 us60.300 us
thread_safe_graph_propagation_fan_in_lazy_dirty_epochs_16publish1303.921 us105.942 us
thread_safe_graph_propagation_fan_in_batched_flush_8other4032.572 ms216.262 us
thread_safe_graph_propagation_fan_in_batched_flush_8get_refresh683.290 us8.300 us
thread_safe_graph_propagation_fan_in_batched_flush_8dependency_edge652.350 us28.090 us
thread_safe_graph_propagation_fan_in_batched_flush_8set_cell_invalidation35.310 us87.820 us
thread_safe_graph_propagation_fan_in_batched_flush_8publish6616.150 us57.302 us
thread_safe_graph_propagation_fan_in_batched_flush_16other7957.602 ms346.913 us
thread_safe_graph_propagation_fan_in_batched_flush_16get_refresh25415.790 us29.590 us
thread_safe_graph_propagation_fan_in_batched_flush_16dependency_edge1294.860 us58.880 us
thread_safe_graph_propagation_fan_in_batched_flush_16set_cell_invalidation62.760 us186.002 us
thread_safe_graph_propagation_fan_in_batched_flush_16publish13565.141 us122.851 us

Multi-Language

lazily is implemented across three languages with shared semantics:

lazily-rslazily-ziglazily-py
ContextOwned Context structExplicit allocatorPlain dict
Slot creationBox<dyn Fn> closurescomptime function pointersLambdas
Cell equalityPartialEq traitstd.meta.eql!= operator
Thread safetySingle-threaded Context; explicit ThreadSafeContextMutex by defaultGIL
StorageUnified generics.direct / .indirectObject identity

License

MIT