Skip to content

Conversation

@indietyp
Copy link
Member

🌟 What is the purpose of this PR?

This PR introduces a BumpAllocator trait to standardize arena-style memory management across the codebase. It also adds a new DeadLocalElimination pass to remove unused local variables from MIR bodies, and integrates it with the existing DeadStoreElimination pass.

Using the new BumpAllocator throughout, instead of managing their own memory results in a speedup of roughly ~5-15%.

🔍 What does this change?

  • Adds a new BumpAllocator trait in core/src/heap/bump.rs that provides a common interface for arena allocators
  • Implements BumpAllocator for both Heap and Scratch allocators
  • Adds a new DeadLocalElimination pass that physically removes unused locals from MIR bodies
  • Modifies transform passes to accept a BumpAllocator parameter for better memory reuse
  • Updates CfgSimplify, DeadStoreElimination, and Sroa passes to use the new allocator pattern
  • Integrates DeadLocalElimination into DeadStoreElimination to compact local declarations after removing dead stores

Pre-Merge Checklist 🚀

🚢 Has this modified a publishable library?

This PR:

  • does not modify any publishable blocks or libraries, or modifications do not need publishing

📜 Does this require a change to the docs?

The changes in this PR:

  • are internal and do not require a docs change

🕸️ Does this require a change to the Turbo Graph?

The changes in this PR:

  • do not affect the execution graph

🛡 What tests cover this?

  • Added comprehensive test suite for the new DeadLocalElimination pass
  • Existing tests for transform passes have been updated to use the new allocator pattern
  • Snapshot tests verify the correct behavior of dead local elimination

@vercel vercel bot temporarily deployed to Preview – petrinaut December 18, 2025 12:15 Inactive
@cursor
Copy link

cursor bot commented Dec 18, 2025

PR Summary

Introduce a generic BumpAllocator and integrate per-pass scratch allocation across MIR transforms, add a new Dead Local Elimination pass, refactor CfgSimplify/SROA/DSE/SsaRepair, and update tests/benchmarks accordingly.

  • feat(core): Bump-style allocation
    • Introduce BumpAllocator trait with allocate_slice_copy and reset.
    • Implement BumpAllocator for heap::Allocator, Heap, and Scratch; move slice/string allocation via allocate_slice_copy; add fast_hash_map_in/fast_hash_set_in and FastHasher alias.
  • refactor(mir passes)
    • Generalize CfgSimplify, Sroa, DeadStoreElimination, and SsaRepair to accept a BumpAllocator (new new_in constructors) and use per-run Scratch for temp state.
    • Simplify CfgSimplify internals (no persistent RPO set; compute per run) and call DeadBlockElimination::new_in(...).run(...); make DeadBlockElimination generic over allocator and allocate transient sets via *_in helpers.
    • Update transfer.rs to use allocator-agnostic BumpAllocator methods; remove direct try_alloc_str path.
  • feat(mir): Dead Local Elimination
    • Add pass/transform/dle with DeadLocalElimination that finds unused locals (via DenseBitSet/visitors) and compacts locals; integrate into DeadStoreElimination via .with_dead(...) and run after DSE.
    • Update tests and golden snapshots to reflect removed dead locals and simplified block params; add dedicated DLE tests.
  • Tooling & benches
    • compiletest helpers now thread a Scratch allocator and return it; use new_in(...) when constructing passes.
    • Add SROA benchmarks; update pipeline bench to use per-pass scratch; minor SVG class/id changes in generated diagrams.

Written by Cursor Bugbot for commit d241e3e. This will update automatically on new commits. Configure here.

@github-actions github-actions bot added area/libs Relates to first-party libraries/crates/packages (area) type/eng > backend Owned by the @backend team area/tests New or updated tests labels Dec 18, 2025
@indietyp indietyp force-pushed the bm/be-248-hashql-implement-dle-dead-local-elimination branch from 31254ee to dccdc9f Compare December 18, 2025 12:25
@indietyp indietyp force-pushed the bm/h-5877-hashql-update-skill-to-include-mir-builder branch from 9d400b7 to 18bd814 Compare December 18, 2025 12:25
@vercel vercel bot temporarily deployed to Preview – petrinaut December 18, 2025 12:25 Inactive
@vercel vercel bot temporarily deployed to Preview – petrinaut December 18, 2025 15:05 Inactive
@vercel vercel bot temporarily deployed to Preview – petrinaut December 18, 2025 17:10 Inactive
@graphite-app graphite-app bot requested review from a team December 18, 2025 17:18
@indietyp indietyp force-pushed the bm/h-5877-hashql-update-skill-to-include-mir-builder branch from 18bd814 to f1c535e Compare December 19, 2025 00:06
@indietyp indietyp force-pushed the bm/be-248-hashql-implement-dle-dead-local-elimination branch from e874d4f to 07ff32b Compare December 19, 2025 00:06
@indietyp indietyp force-pushed the bm/be-248-hashql-implement-dle-dead-local-elimination branch from 07ff32b to f710ac7 Compare December 19, 2025 08:41
@indietyp indietyp force-pushed the bm/h-5877-hashql-update-skill-to-include-mir-builder branch from f1c535e to 5555534 Compare December 19, 2025 08:41
@indietyp indietyp force-pushed the bm/h-5877-hashql-update-skill-to-include-mir-builder branch from a617bab to d17cdce Compare December 19, 2025 14:31
@indietyp indietyp force-pushed the bm/be-248-hashql-implement-dle-dead-local-elimination branch from 7823ffa to 93db05d Compare December 19, 2025 14:31
@graphite-app graphite-app bot changed the base branch from bm/h-5877-hashql-update-skill-to-include-mir-builder to graphite-base/8198 December 19, 2025 16:16
@indietyp indietyp force-pushed the bm/be-248-hashql-implement-dle-dead-local-elimination branch from 93db05d to d241e3e Compare December 19, 2025 16:34
@vercel vercel bot temporarily deployed to Preview – petrinaut December 19, 2025 16:34 Inactive
@graphite-app graphite-app bot changed the base branch from graphite-base/8198 to main December 19, 2025 16:35
@graphite-app
Copy link
Contributor

graphite-app bot commented Dec 19, 2025

Merge activity

  • Dec 19, 4:35 PM UTC: Graphite rebased this pull request, because this pull request is set to merge when ready.

@codecov
Copy link

codecov bot commented Dec 19, 2025

Codecov Report

❌ Patch coverage is 95.66396% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 58.90%. Comparing base (ec0c785) to head (d241e3e).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
libs/@local/hashql/core/src/heap/bump.rs 50.00% 6 Missing ⚠️
libs/@local/hashql/core/src/heap/allocator.rs 40.00% 3 Missing ⚠️
libs/@local/hashql/core/src/heap/scratch.rs 50.00% 3 Missing ⚠️
...al/hashql/mir/src/pass/transform/ssa_repair/mod.rs 87.50% 3 Missing ⚠️
libs/@local/hashql/mir/src/pass/transform/sroa.rs 83.33% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #8198      +/-   ##
==========================================
+ Coverage   58.77%   58.90%   +0.13%     
==========================================
  Files        1189     1192       +3     
  Lines      112425   112690     +265     
  Branches     5010     5013       +3     
==========================================
+ Hits        66074    66378     +304     
+ Misses      45593    45554      -39     
  Partials      758      758              
Flag Coverage Δ
apps.hash-ai-worker-ts 1.32% <ø> (ø)
apps.hash-api 0.00% <ø> (ø)
local.hash-graph-sdk 10.88% <ø> (ø)
local.hash-isomorphic-utils 0.00% <ø> (ø)
rust.hash-graph-api 2.89% <ø> (ø)
rust.hashql-ast 87.25% <ø> (ø)
rust.hashql-compiletest 46.65% <ø> (ø)
rust.hashql-core 82.36% <70.00%> (+0.02%) ⬆️
rust.hashql-eval 68.54% <ø> (ø)
rust.hashql-hir 89.10% <ø> (ø)
rust.hashql-mir 88.35% <98.78%> (+0.82%) ⬆️
rust.hashql-syntax-jexpr 94.05% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@indietyp indietyp added this pull request to the merge queue Dec 19, 2025
Merged via the queue into main with commit fd6d8b5 Dec 19, 2025
157 of 199 checks passed
@indietyp indietyp deleted the bm/be-248-hashql-implement-dle-dead-local-elimination branch December 19, 2025 17:18
@github-actions
Copy link
Contributor

Benchmark results

@rust/hash-graph-benches – Integrations

policy_resolution_large

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2002 $$25.4 \mathrm{ms} \pm 166 \mathrm{μs}\left({\color{lightgreen}-5.714 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$3.18 \mathrm{ms} \pm 13.1 \mathrm{μs}\left({\color{gray}-0.375 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1001 $$11.5 \mathrm{ms} \pm 60.9 \mathrm{μs}\left({\color{gray}-0.331 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 3314 $$40.5 \mathrm{ms} \pm 276 \mathrm{μs}\left({\color{gray}-1.166 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$13.6 \mathrm{ms} \pm 74.9 \mathrm{μs}\left({\color{gray}0.766 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 1526 $$22.1 \mathrm{ms} \pm 140 \mathrm{μs}\left({\color{gray}-0.783 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 2078 $$25.1 \mathrm{ms} \pm 126 \mathrm{μs}\left({\color{lightgreen}-39.325 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.56 \mathrm{ms} \pm 14.3 \mathrm{μs}\left({\color{lightgreen}-81.713 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 1033 $$10.8 \mathrm{ms} \pm 67.7 \mathrm{μs}\left({\color{lightgreen}-59.357 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_medium

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 102 $$3.59 \mathrm{ms} \pm 13.9 \mathrm{μs}\left({\color{gray}-0.109 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.76 \mathrm{ms} \pm 8.85 \mathrm{μs}\left({\color{gray}-0.882 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 51 $$3.14 \mathrm{ms} \pm 13.1 \mathrm{μs}\left({\color{gray}0.319 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 269 $$4.91 \mathrm{ms} \pm 21.1 \mathrm{μs}\left({\color{gray}-0.418 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$3.32 \mathrm{ms} \pm 15.3 \mathrm{μs}\left({\color{gray}-0.465 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 107 $$3.91 \mathrm{ms} \pm 17.0 \mathrm{μs}\left({\color{gray}1.27 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 133 $$4.16 \mathrm{ms} \pm 22.4 \mathrm{μs}\left({\color{gray}-0.755 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$3.24 \mathrm{ms} \pm 15.1 \mathrm{μs}\left({\color{gray}1.75 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 63 $$3.76 \mathrm{ms} \pm 20.3 \mathrm{μs}\left({\color{gray}-0.654 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_none

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 2 $$2.52 \mathrm{ms} \pm 10.7 \mathrm{μs}\left({\color{red}5.72 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.45 \mathrm{ms} \pm 9.83 \mathrm{μs}\left({\color{red}7.37 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 1 $$2.53 \mathrm{ms} \pm 9.75 \mathrm{μs}\left({\color{red}6.27 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 8 $$2.72 \mathrm{ms} \pm 11.0 \mathrm{μs}\left({\color{red}5.71 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.63 \mathrm{ms} \pm 9.43 \mathrm{μs}\left({\color{red}6.00 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 3 $$2.86 \mathrm{ms} \pm 14.5 \mathrm{μs}\left({\color{red}8.13 \mathrm{\%}}\right) $$ Flame Graph

policy_resolution_small

Function Value Mean Flame graphs
resolve_policies_for_actor user: empty, selectivity: high, policies: 52 $$2.87 \mathrm{ms} \pm 11.6 \mathrm{μs}\left({\color{red}5.28 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: low, policies: 1 $$2.57 \mathrm{ms} \pm 10.4 \mathrm{μs}\left({\color{red}5.87 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: empty, selectivity: medium, policies: 25 $$2.75 \mathrm{ms} \pm 10.4 \mathrm{μs}\left({\color{red}7.50 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: high, policies: 94 $$3.21 \mathrm{ms} \pm 16.4 \mathrm{μs}\left({\color{red}5.23 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: low, policies: 1 $$2.79 \mathrm{ms} \pm 11.3 \mathrm{μs}\left({\color{red}5.93 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: seeded, selectivity: medium, policies: 26 $$2.99 \mathrm{ms} \pm 12.0 \mathrm{μs}\left({\color{red}5.39 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: high, policies: 66 $$3.12 \mathrm{ms} \pm 14.2 \mathrm{μs}\left({\color{gray}3.96 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: low, policies: 1 $$2.77 \mathrm{ms} \pm 12.2 \mathrm{μs}\left({\color{red}6.38 \mathrm{\%}}\right) $$ Flame Graph
resolve_policies_for_actor user: system, selectivity: medium, policies: 29 $$3.00 \mathrm{ms} \pm 11.8 \mathrm{μs}\left({\color{red}5.73 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_complete

Function Value Mean Flame graphs
entity_by_id;one_depth 1 entities $$38.1 \mathrm{ms} \pm 164 \mathrm{μs}\left({\color{gray}-0.425 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 10 entities $$74.9 \mathrm{ms} \pm 357 \mathrm{μs}\left({\color{gray}-0.722 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 25 entities $$42.3 \mathrm{ms} \pm 198 \mathrm{μs}\left({\color{gray}2.90 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 5 entities $$45.2 \mathrm{ms} \pm 248 \mathrm{μs}\left({\color{gray}2.83 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;one_depth 50 entities $$52.8 \mathrm{ms} \pm 395 \mathrm{μs}\left({\color{gray}2.54 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 1 entities $$39.4 \mathrm{ms} \pm 150 \mathrm{μs}\left({\color{gray}0.019 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 10 entities $$410 \mathrm{ms} \pm 895 \mathrm{μs}\left({\color{gray}-1.992 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 25 entities $$87.4 \mathrm{ms} \pm 430 \mathrm{μs}\left({\color{gray}0.349 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 5 entities $$83.4 \mathrm{ms} \pm 346 \mathrm{μs}\left({\color{gray}1.95 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;two_depth 50 entities $$303 \mathrm{ms} \pm 728 \mathrm{μs}\left({\color{red}10.7 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 1 entities $$14.5 \mathrm{ms} \pm 66.4 \mathrm{μs}\left({\color{gray}1.21 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 10 entities $$14.7 \mathrm{ms} \pm 42.9 \mathrm{μs}\left({\color{gray}2.31 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 25 entities $$14.8 \mathrm{ms} \pm 54.2 \mathrm{μs}\left({\color{gray}2.29 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 5 entities $$14.5 \mathrm{ms} \pm 53.0 \mathrm{μs}\left({\color{gray}1.31 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id;zero_depth 50 entities $$17.6 \mathrm{ms} \pm 92.0 \mathrm{μs}\left({\color{gray}2.02 \mathrm{\%}}\right) $$ Flame Graph

read_scaling_linkless

Function Value Mean Flame graphs
entity_by_id 1 entities $$14.2 \mathrm{ms} \pm 63.0 \mathrm{μs}\left({\color{gray}2.40 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10 entities $$14.5 \mathrm{ms} \pm 60.7 \mathrm{μs}\left({\color{gray}3.33 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 100 entities $$14.4 \mathrm{ms} \pm 46.7 \mathrm{μs}\left({\color{gray}1.03 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 1000 entities $$14.9 \mathrm{ms} \pm 66.8 \mathrm{μs}\left({\color{gray}0.766 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id 10000 entities $$22.0 \mathrm{ms} \pm 152 \mathrm{μs}\left({\color{gray}1.07 \mathrm{\%}}\right) $$ Flame Graph

representative_read_entity

Function Value Mean Flame graphs
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/block/v/1 $$28.8 \mathrm{ms} \pm 213 \mathrm{μs}\left({\color{gray}-0.560 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/book/v/1 $$29.5 \mathrm{ms} \pm 291 \mathrm{μs}\left({\color{gray}2.44 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/building/v/1 $$29.5 \mathrm{ms} \pm 253 \mathrm{μs}\left({\color{gray}0.068 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/organization/v/1 $$28.7 \mathrm{ms} \pm 249 \mathrm{μs}\left({\color{gray}-0.970 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/page/v/2 $$29.0 \mathrm{ms} \pm 309 \mathrm{μs}\left({\color{gray}0.441 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/person/v/1 $$29.5 \mathrm{ms} \pm 218 \mathrm{μs}\left({\color{gray}1.99 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/playlist/v/1 $$28.0 \mathrm{ms} \pm 236 \mathrm{μs}\left({\color{gray}-2.932 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/song/v/1 $$28.8 \mathrm{ms} \pm 261 \mathrm{μs}\left({\color{gray}-1.453 \mathrm{\%}}\right) $$ Flame Graph
entity_by_id entity type ID: https://blockprotocol.org/@alice/types/entity-type/uk-address/v/1 $$28.2 \mathrm{ms} \pm 267 \mathrm{μs}\left({\color{gray}0.167 \mathrm{\%}}\right) $$ Flame Graph

representative_read_entity_type

Function Value Mean Flame graphs
get_entity_type_by_id Account ID: bf5a9ef5-dc3b-43cf-a291-6210c0321eba $$7.87 \mathrm{ms} \pm 31.8 \mathrm{μs}\left({\color{gray}0.156 \mathrm{\%}}\right) $$ Flame Graph

representative_read_multiple_entities

Function Value Mean Flame graphs
entity_by_property traversal_paths=0 0 $$44.0 \mathrm{ms} \pm 270 \mathrm{μs}\left({\color{gray}-0.040 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$91.4 \mathrm{ms} \pm 495 \mathrm{μs}\left({\color{gray}0.250 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$49.7 \mathrm{ms} \pm 375 \mathrm{μs}\left({\color{gray}-0.201 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$57.5 \mathrm{ms} \pm 330 \mathrm{μs}\left({\color{gray}-0.851 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$66.1 \mathrm{ms} \pm 436 \mathrm{μs}\left({\color{gray}-0.301 \mathrm{\%}}\right) $$
entity_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$72.2 \mathrm{ms} \pm 401 \mathrm{μs}\left({\color{gray}-0.137 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=0 0 $$47.3 \mathrm{ms} \pm 259 \mathrm{μs}\left({\color{gray}0.081 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=255 1,resolve_depths=inherit:1;values:255;properties:255;links:127;link_dests:126;type:true $$74.0 \mathrm{ms} \pm 335 \mathrm{μs}\left({\color{gray}0.514 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:0;link_dests:0;type:false $$54.5 \mathrm{ms} \pm 408 \mathrm{μs}\left({\color{gray}0.277 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:0;links:1;link_dests:0;type:true $$61.4 \mathrm{ms} \pm 345 \mathrm{μs}\left({\color{gray}-0.292 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:0;properties:2;links:1;link_dests:0;type:true $$63.3 \mathrm{ms} \pm 306 \mathrm{μs}\left({\color{gray}-0.587 \mathrm{\%}}\right) $$
link_by_source_by_property traversal_paths=2 1,resolve_depths=inherit:0;values:2;properties:2;links:1;link_dests:0;type:true $$63.7 \mathrm{ms} \pm 350 \mathrm{μs}\left({\color{gray}0.211 \mathrm{\%}}\right) $$

scenarios

Function Value Mean Flame graphs
full_test query-limited $$133 \mathrm{ms} \pm 487 \mathrm{μs}\left({\color{red}5.28 \mathrm{\%}}\right) $$ Flame Graph
full_test query-unlimited $$131 \mathrm{ms} \pm 455 \mathrm{μs}\left({\color{gray}1.30 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-limited $$39.1 \mathrm{ms} \pm 217 \mathrm{μs}\left({\color{lightgreen}-61.612 \mathrm{\%}}\right) $$ Flame Graph
linked_queries query-unlimited $$558 \mathrm{ms} \pm 985 \mathrm{μs}\left({\color{lightgreen}-7.122 \mathrm{\%}}\right) $$ Flame Graph

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/libs Relates to first-party libraries/crates/packages (area) area/tests New or updated tests type/eng > backend Owned by the @backend team

Development

Successfully merging this pull request may close these issues.

3 participants