Skip to content

perf: Inline from_bytes#313

Merged
frankdavid merged 1 commit intomainfrom
frankdavid/inline-from-bytes
May 22, 2025
Merged

perf: Inline from_bytes#313
frankdavid merged 1 commit intomainfrom
frankdavid/inline-from-bytes

Conversation

@frankdavid
Copy link
Copy Markdown
Contributor

Add the #[inline] attribute to the from_bytes method in all Storable trait implementations.

The motivation is that it's usually known at the call site what Cow variant is being passed (owned or borrowed). By inlining, the compiler can optimize for the passed Cow variant.

@frankdavid frankdavid requested a review from a team as a code owner May 21, 2025 18:39
@github-actions
Copy link
Copy Markdown

canbench 🏋 (dir: .) 9e336ab 2025-05-21 18:49:49 UTC

./canbench_results.yml is up to date
📦 canbench_results_benchmark.csv available in artifacts

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

Summary:
  instructions:
    status:   Improvements detected! 🟢
    counts:   [total 304 | new 0 | improved 37 | regressed 0 | unchanged 267]
    change:   [min -838.88M | med -159.99K | max +41.81M]
    change %: [min -68.34% | med -0.02% | max +1.82%]

  heap_increase:
    status:   No significant changes detected 👍
    counts:   [total 304 | new 0 | improved 0 | regressed 0 | unchanged 304]
    change:   [min 0 | med 0 | max 0]
    change %: [min 0.00% | med 0.00% | max 0.00%]

  stable_memory_increase:
    status:   No significant changes detected 👍
    counts:   [total 304 | new 0 | improved 0 | regressed 0 | unchanged 304]
    change:   [min 0 | med 0 | max 0]
    change %: [min 0.00% | med 0.00% | max 0.00%]

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

Only significant changes:
| status | name                                         |     ins |  ins Δ% | HI |  HI Δ% | SMI |  SMI Δ% |
|--------|----------------------------------------------|---------|---------|----|--------|-----|---------|
|   -    | btreemap_v2_scan_iter_1k_0b                  |   1.46M |  -2.05% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_scan_iter_rev_1k_0b              |   1.46M |  -2.09% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_insert_u64_blob512   | 633.94M |  -2.17% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_scan_values_1k_0b                |   1.46M |  -2.26% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_scan_values_rev_1k_0b            |   1.46M |  -2.26% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_insert_u64_u64       | 547.69M |  -2.51% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_remove_u64_u64                   | 604.75M |  -2.58% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_remove_u64_vec8                  | 589.27M |  -2.62% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_remove_u64_blob8                 | 583.41M |  -2.63% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_scan_keys_rev_1k_0b              | 936.58K |  -2.78% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_insert_u64_u64                   | 418.36M |  -3.26% |  0 |  0.00% |   6 |   0.00% |
|   -    | btreemap_v2_insert_u64_vec8                  | 416.65M |  -3.30% |  0 |  0.00% |  21 |   0.00% |
|   -    | btreemap_v2_insert_u64_blob8                 | 409.37M |  -3.36% |  0 |  0.00% |   5 |   0.00% |
|   -    | btreemap_v2_mem_manager_get_u64_vec512       | 407.06M |  -3.43% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_pop_first_u64_u64                | 693.08M |  -3.58% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_pop_first_u64_vec8               | 685.13M |  -3.64% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_pop_last_u64_u64                 | 680.23M |  -3.64% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_contains_u64_vec512  | 380.63M |  -3.66% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_pop_first_u64_blob8              | 680.85M |  -3.66% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_pop_last_u64_vec8                | 671.45M |  -3.71% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_pop_last_u64_blob8               | 668.40M |  -3.72% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_get_u64_blob512      | 312.99M |  -4.41% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_range_value_sum_1k_0b            |  16.65K |  -4.41% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_range_key_sum_1k_0b              |  16.64K |  -4.42% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_range_count_1k_0b                |  16.12K |  -4.48% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_contains_u64_u64     | 302.30M |  -4.56% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_contains_u64_blob512 | 296.67M |  -4.64% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_mem_manager_get_u64_u64          | 314.05M |  -4.64% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_get_u64_vec8                     | 231.22M |  -5.89% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_get_u64_blob8                    | 230.44M |  -5.91% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_contains_u64_u64                 | 221.97M |  -6.11% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_get_u64_u64                      | 233.54M |  -6.14% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_contains_u64_vec8                | 220.42M |  -6.17% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_contains_u64_blob8               | 220.42M |  -6.17% |  0 |  0.00% |   0 |   0.00% |
|   -    | vec_get_u64                                  |   4.79M |  -9.11% |  0 |  0.00% |   0 |   0.00% |
|   -    | btreemap_v2_remove_10mib_values              |   4.72B | -15.08% |  0 |  0.00% | 657 |   0.00% |
|   -    | btreemap_v2_get_10mib_values                 | 388.59M | -68.34% |  0 |  0.00% |   0 |   0.00% |

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

@maksymar
Copy link
Copy Markdown
Contributor

  instructions:
    status:   Improvements detected! 🟢
    counts:   [total 304 | new 0 | improved 37 | regressed 0 | unchanged 267]
    change:   [min -838.88M | med -159.99K | max +41.81M]
    change %: [min -68.34% | med -0.02% | max +1.82%]

on average it's just -0.02% improvement, but in some cases up to -68.3%. wow!

@frankdavid frankdavid merged commit d44268e into main May 22, 2025
11 checks passed
@frankdavid frankdavid deleted the frankdavid/inline-from-bytes branch May 22, 2025 09:21
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.

2 participants