Skip to content

perf: (breaking change) remove excessive cloning in btreemap.insert#322

Merged
maksymar merged 37 commits intomainfrom
maksym/into_bytes
Jun 12, 2025
Merged

perf: (breaking change) remove excessive cloning in btreemap.insert#322
maksymar merged 37 commits intomainfrom
maksym/into_bytes

Conversation

@maksymar
Copy link
Copy Markdown
Contributor

@maksymar maksymar commented May 26, 2025

This PR removes excessive cloning in btreemap.insert by adding a new method into_bytes to Memory trait.

Google sheets CSV reports link.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2025

canbench 🏋 (dir: ./benchmarks/btreemap) 223ea88 2025-06-12 16:22:32 UTC

./benchmarks/btreemap/canbench_results.yml is up to date
📦 canbench_results_btreemap.csv available in artifacts

---------------------------------------------------

Summary:
  instructions:
    status:   Improvements detected 🟢
    counts:   [total 285 | regressed 0 | improved 14 | new 0 | unchanged 271]
    change:   [max +630 | p75 0 | median 0 | p25 -15 | min -838.88M]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 -0.00% | min -15.97%]

  heap_increase:
    status:   Improvements detected 🟢
    counts:   [total 285 | regressed 0 | improved 1 | new 0 | unchanged 284]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min -161]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min -50.00%]

  stable_memory_increase:
    status:   No significant changes 👍
    counts:   [total 285 | regressed 0 | improved 0 | new 0 | unchanged 285]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

---------------------------------------------------

Only significant changes:
| status | name                                      | calls |     ins |  ins Δ% |  HI |   HI Δ% |   SMI |  SMI Δ% |
|--------|-------------------------------------------|-------|---------|---------|-----|---------|-------|---------|
|   -    | btreemap_v2_insert_u64_vec8               |       | 417.79M |  -2.16% |   0 |   0.00% |    21 |   0.00% |
|   -    | btreemap_v2_insert_vec_32_512             |       | 969.86M |  -2.79% |   0 |   0.00% |    91 |   0.00% |
|   -    | btreemap_v2_range_count_1k_10kib          |       |   2.58M |  -2.83% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_keys_rev_1k_10kib        |       |   2.49M |  -3.37% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_keys_1k_10kib            |       |   2.51M |  -3.41% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_mem_manager_insert_u64_vec512 |       | 843.36M |  -3.59% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_insert_vec_32_1024            |       |   1.17B |  -4.00% |   0 |   0.00% |   171 |   0.00% |
|   -    | btreemap_v2_scan_iter_rev_1k_0b           |       |   1.38M |  -5.11% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_iter_1k_0b               |       |   1.38M |  -5.19% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_values_rev_1k_0b         |       |   1.36M |  -5.19% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_values_1k_0b             |       |   1.36M |  -5.27% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_keys_rev_1k_0b           |       |   1.11M |  -7.32% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_scan_keys_1k_0b               |       |   1.10M |  -7.47% |   0 |   0.00% |     0 |   0.00% |
|   -    | btreemap_v2_insert_10mib_values           |       |   4.41B | -15.97% | 161 | -50.00% | 3.61K |   0.00% |

ins = instructions, HI = heap_increase, SMI = stable_memory_increase, Δ% = percent change

---------------------------------------------------
CSV results saved to canbench_results.csv

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2025

canbench 🏋 (dir: ./benchmarks/vec) 223ea88 2025-06-12 16:20:53 UTC

./benchmarks/vec/canbench_results.yml is up to date
📦 canbench_results_vec.csv available in artifacts

---------------------------------------------------

Summary:
  instructions:
    status:   Improvements detected 🟢
    counts:   [total 16 | regressed 0 | improved 1 | new 0 | unchanged 15]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min -510.00K]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min -8.69%]

  heap_increase:
    status:   No significant changes 👍
    counts:   [total 16 | regressed 0 | improved 0 | new 0 | unchanged 16]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

  stable_memory_increase:
    status:   No significant changes 👍
    counts:   [total 16 | regressed 0 | improved 0 | new 0 | unchanged 16]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

---------------------------------------------------

Only significant changes:
| status | name           | calls |   ins |  ins Δ% | HI |  HI Δ% | SMI |  SMI Δ% |
|--------|----------------|-------|-------|---------|----|--------|-----|---------|
|   -    | vec_insert_u64 |       | 5.36M |  -8.69% |  0 |  0.00% |   1 |   0.00% |

ins = instructions, HI = heap_increase, SMI = stable_memory_increase, Δ% = percent change

---------------------------------------------------
CSV results saved to canbench_results.csv

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2025

canbench 🏋 (dir: ./benchmarks/memory_manager) 223ea88 2025-06-12 16:20:40 UTC

./benchmarks/memory_manager/canbench_results.yml is up to date
📦 canbench_results_memory-manager.csv available in artifacts

---------------------------------------------------

Summary:
  instructions:
    status:   No significant changes 👍
    counts:   [total 3 | regressed 0 | improved 0 | new 0 | unchanged 3]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

  heap_increase:
    status:   No significant changes 👍
    counts:   [total 3 | regressed 0 | improved 0 | new 0 | unchanged 3]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

  stable_memory_increase:
    status:   No significant changes 👍
    counts:   [total 3 | regressed 0 | improved 0 | new 0 | unchanged 3]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

---------------------------------------------------
CSV results saved to canbench_results.csv

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 27, 2025

canbench 🏋 (dir: ./benchmarks/compare) 223ea88 2025-06-12 16:21:44 UTC

./benchmarks/compare/canbench_results.yml is up to date
📦 canbench_results_compare.csv available in artifacts

---------------------------------------------------

Summary:
  instructions:
    status:   Improvements detected 🟢
    counts:   [total 18 | regressed 0 | improved 4 | new 0 | unchanged 14]
    change:   [max +3.00M | p75 +5 | median 0 | p25 -419.17M | min -1.44B]
    change %: [max +0.08% | p75 0.00% | median 0.00% | p25 -1.46% | min -39.18%]

  heap_increase:
    status:   Improvements detected 🟢
    counts:   [total 18 | regressed 0 | improved 2 | new 0 | unchanged 16]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min -1.60K]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min -49.43%]

  stable_memory_increase:
    status:   No significant changes 👍
    counts:   [total 18 | regressed 0 | improved 0 | new 0 | unchanged 18]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

---------------------------------------------------

Only significant changes:
| status | name                     | calls |     ins |  ins Δ% |    HI |   HI Δ% |   SMI |  SMI Δ% |
|--------|--------------------------|-------|---------|---------|-------|---------|-------|---------|
|   -    | read_chunks_btreemap_1k  |       |   4.99B |  -7.77% | 1.60K |  -0.12% | 1.67K |   0.00% |
|   -    | write_chunks_btreemap_1k |       |   4.49B |  -8.56% | 1.60K |  -0.12% | 1.67K |   0.00% |
|   -    | read_chunks_btreemap_1   |       | 799.99M | -34.38% | 1.64K | -49.43% | 1.67K |   0.00% |
|   -    | write_chunks_btreemap_1  |       | 650.63M | -39.18% | 1.64K | -49.43% | 1.67K |   0.00% |

ins = instructions, HI = heap_increase, SMI = stable_memory_increase, Δ% = percent change

---------------------------------------------------
CSV results saved to canbench_results.csv

@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jun 11, 2025

canbench 🏋 (dir: ./benchmarks/btreeset) 223ea88 2025-06-12 16:21:01 UTC

./benchmarks/btreeset/canbench_results.yml is up to date
📦 canbench_results_btreeset.csv available in artifacts

---------------------------------------------------

Summary:
  instructions:
    status:   No significant changes 👍
    counts:   [total 100 | regressed 0 | improved 0 | new 0 | unchanged 100]
    change:   [max +511.24K | p75 +3.99K | median +36 | p25 +24 | min -5.76M]
    change %: [max +0.04% | p75 0.01% | median 0.00% | p25 0.00% | min -1.00%]

  heap_increase:
    status:   No significant changes 👍
    counts:   [total 100 | regressed 0 | improved 0 | new 0 | unchanged 100]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

  stable_memory_increase:
    status:   No significant changes 👍
    counts:   [total 100 | regressed 0 | improved 0 | new 0 | unchanged 100]
    change:   [max 0 | p75 0 | median 0 | p25 0 | min 0]
    change %: [max 0.00% | p75 0.00% | median 0.00% | p25 0.00% | min 0.00%]

---------------------------------------------------
CSV results saved to canbench_results.csv

@maksymar maksymar changed the title perf: remove excessive cloning in btreemap.insert perf: (breaking change) remove excessive cloning in btreemap.insert Jun 12, 2025
@maksymar maksymar marked this pull request as ready for review June 12, 2025 12:57
@maksymar maksymar requested a review from a team as a code owner June 12, 2025 12:57
@maksymar maksymar requested a review from Copilot June 12, 2025 12:58
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Copilot encountered an error and was unable to review this pull request. You can try again by re-requesting a review.

Comment thread src/storable.rs Outdated
@maksymar maksymar enabled auto-merge (squash) June 12, 2025 14:48
@maksymar maksymar merged commit 3f6c0c7 into main Jun 12, 2025
16 checks passed
@maksymar maksymar deleted the maksym/into_bytes branch June 12, 2025 16:24
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.

3 participants