Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add frozen support to roaring64 #688

Merged
merged 16 commits into from
Feb 28, 2025
Prev Previous commit
Next Next commit
Link free nodes together
This adds the index of the next free node into a newly freed node, or `capacity` if there are no more free indices.

This significantly speeds up finding the next free index, which is important for add+remove workloads.

Benchmarks
Old:
------------------------------------------------------------------
Benchmark                        Time             CPU   Iterations
------------------------------------------------------------------
r64InsertRemoveRandom/0        127 ns          127 ns      5461079
r64InsertRemoveRandom/1      31633 ns        31604 ns        24028
r64InsertRemoveRandom/2      30782 ns        30769 ns        21859
r64InsertRemoveRandom/3      31985 ns        31969 ns        21558
r64InsertRemoveRandom/4        356 ns          356 ns      1962694
r64InsertRemoveRandom/5      28972 ns        28962 ns        21366
r64InsertRemoveRandom/6      30632 ns        30623 ns        22682
r64InsertRemoveRandom/7        448 ns          448 ns      1601550
r64InsertRemoveRandom/8      32506 ns        32495 ns        21591
r64InsertRemoveRandom/9        689 ns          689 ns      1002237
cppInsertRemoveRandom/0        131 ns          131 ns      5319673
cppInsertRemoveRandom/1      16106 ns        16104 ns        43632
cppInsertRemoveRandom/2       3881 ns         3881 ns       180087
cppInsertRemoveRandom/3       3582 ns         3582 ns       171298
cppInsertRemoveRandom/4        403 ns          402 ns      1666697
cppInsertRemoveRandom/5        993 ns          993 ns       706038
cppInsertRemoveRandom/6       4039 ns         4038 ns       172421
cppInsertRemoveRandom/7        469 ns          469 ns      1440197
cppInsertRemoveRandom/8       1454 ns         1454 ns       633551
cppInsertRemoveRandom/9        654 ns          654 ns      1091588
setInsertRemoveRandom/0       1944 ns         1943 ns       368926
setInsertRemoveRandom/1       1955 ns         1953 ns       404931
setInsertRemoveRandom/2       1911 ns         1910 ns       358466
setInsertRemoveRandom/3       1953 ns         1951 ns       362351
setInsertRemoveRandom/4       2104 ns         2102 ns       321387
setInsertRemoveRandom/5       1944 ns         1943 ns       354836
setInsertRemoveRandom/6       1835 ns         1835 ns       359099
setInsertRemoveRandom/7       1970 ns         1968 ns       372625
setInsertRemoveRandom/8       1894 ns         1892 ns       355456
setInsertRemoveRandom/9       1659 ns         1659 ns       355902

New:
------------------------------------------------------------------
Benchmark                        Time             CPU   Iterations
------------------------------------------------------------------
r64InsertRemoveRandom/0        128 ns          128 ns      5614266
r64InsertRemoveRandom/1        935 ns          935 ns       739679
r64InsertRemoveRandom/2        916 ns          916 ns       739944
r64InsertRemoveRandom/3        936 ns          936 ns       690708
r64InsertRemoveRandom/4        368 ns          368 ns      1957642
r64InsertRemoveRandom/5       1141 ns         1140 ns       592505
r64InsertRemoveRandom/6       1139 ns         1138 ns       657840
r64InsertRemoveRandom/7        481 ns          481 ns      1434967
r64InsertRemoveRandom/8       1447 ns         1446 ns       484463
r64InsertRemoveRandom/9        721 ns          721 ns      1017456
cppInsertRemoveRandom/0        134 ns          134 ns      5524804
cppInsertRemoveRandom/1      15616 ns        15608 ns        47666
cppInsertRemoveRandom/2       3855 ns         3854 ns       180265
cppInsertRemoveRandom/3       3809 ns         3808 ns       183595
cppInsertRemoveRandom/4        412 ns          412 ns      1695708
cppInsertRemoveRandom/5       1012 ns         1011 ns       713501
cppInsertRemoveRandom/6       3410 ns         3409 ns       199214
cppInsertRemoveRandom/7        474 ns          474 ns      1496740
cppInsertRemoveRandom/8       1421 ns         1420 ns       465868
cppInsertRemoveRandom/9        564 ns          564 ns      1148076
setInsertRemoveRandom/0       1956 ns         1956 ns       351283
setInsertRemoveRandom/1       1959 ns         1958 ns       355766
setInsertRemoveRandom/2       1886 ns         1885 ns       357406
setInsertRemoveRandom/3       1905 ns         1904 ns       355235
setInsertRemoveRandom/4       1945 ns         1944 ns       364599
setInsertRemoveRandom/5       1902 ns         1902 ns       350312
setInsertRemoveRandom/6       1907 ns         1906 ns       346962
setInsertRemoveRandom/7       1937 ns         1936 ns       356168
setInsertRemoveRandom/8       1881 ns         1880 ns       341472
setInsertRemoveRandom/9       1962 ns         1961 ns       350643
  • Loading branch information
SLieve committed Jan 12, 2025
commit 23a8441cf3765aec5bc6b0dc4f4c61df39fdb7d1
Loading
Loading