Skip to content

[iddqd-benches] expand benchmark suite#234

Merged
sunshowers merged 1 commit intomainfrom
sunshowers/spr/iddqd-benches-expand-benchmark-suite
Apr 22, 2026
Merged

[iddqd-benches] expand benchmark suite#234
sunshowers merged 1 commit intomainfrom
sunshowers/spr/iddqd-benches-expand-benchmark-suite

Conversation

@sunshowers
Copy link
Copy Markdown
Collaborator

Add benchmarks for bulk_insert, churn, iter, shrink_to_fit, and a
ref_mut microbench alongside the existing get sweep.

These benches compile and run against the current HashMap-backed
ItemSet, establishing a baseline before any storage-layout changes.
Criterion medians on a Ryzen 7950x:

get (point lookup, ns):
    size  std_hash  std_btree  id_hash_own  id_hash_brw  id_ord_own  id_ord_brw
       1      1.75       2.02         6.00         5.97        6.90        6.89
      10      2.81       1.81        10.43        10.38        7.77        7.83
     100      3.14       9.07        14.09        13.82       25.88       25.72
      1k      4.01      13.84        16.91        16.97       41.52       39.40
     10k      6.65      24.79        23.12        21.74       75.48       66.99
     50k     22.91      43.45        38.61        37.95       90.01      104.21
    100k     28.91      68.69        51.67        53.79      136.18      106.45
    500k    126.70     299.95       328.58       320.65      1248.5      1209.2
      1M    141.33     873.01       346.78       366.89      1230.0      1223.1

bulk_insert (fill N records):
  size     std_hash    std_btree      id_hash       id_ord
   100      1.59 µs      1.75 µs      2.36 µs      9.69 µs
   10k    163.05 µs    299.17 µs    262.71 µs      2.17 ms
  100k      1.55 ms      3.15 ms      2.81 ms     26.78 ms

churn (1000 remove+reinsert pairs, µs):
  size   std_hash  std_btree   id_hash    id_ord
   100      14.72      40.97     30.73    139.45
   10k      19.14      43.68     50.81    282.23
  100k      24.20      53.13     63.75    304.27

iter (full pass):
  size     std_hash    std_btree      id_hash       id_ord
   100     46.11 ns     82.96 ns     45.79 ns    289.07 ns
   10k      5.69 µs      9.28 µs      5.75 µs     39.01 µs
  100k     62.40 µs    136.00 µs     53.96 µs    480.80 µs

shrink_to_fit (fill, scatter ~50% holes, compact):
  size     std_hash      id_hash       id_ord
   100    295.54 ns    643.52 ns    273.63 ns
   10k     26.35 µs    348.79 µs     24.38 µs
  100k    283.52 µs     36.03 ms    251.36 µs

ref_mut/id_ord_map: 13.76 ns

Created using spr 1.3.6-beta.1
@sunshowers sunshowers merged commit fd4f4e3 into main Apr 22, 2026
33 checks passed
@sunshowers sunshowers deleted the sunshowers/spr/iddqd-benches-expand-benchmark-suite branch April 22, 2026 23:10
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