-
Notifications
You must be signed in to change notification settings - Fork 84
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
0.9.0 Tracking Issue #178
Comments
Thinking out loud: A major version bump would be a good time to bump rust edition to 2021 Edit: Plus, we've already bumped MSRV to min supported ver for 2021 edition |
Here are my benchmark comparisons for v0.8.1 to 49455d4 EnvironmentIntel(R) Core(TM) i7-8700K CPU @ 3.70GHz. Hyperthreading and frequency scaling disabled. Base Arch Linux install. Linux 5.16.5-arch1-1 AnalysisOn rust stable (scalar only) The good
[1] Depends on the dataset. Can be as little as zero The bad
DataNotes
Analysis for SIMD coming later, but the data is in the zip if you want to peek |
SIMD
|
@Kerollmops Time to get rid of |
You are right, I created issue #200 about that thank you for the reminder.
I am so much impressed by what you've done and it is only the benchmarks for x64_86 🎉 About the scalar version, you are right: the perf losses aren't much important as they are under the millisecond! Once we release the new version of roaring I will create a GitHub release to talk about the work you have done, featuring Meilisearch just for its fame and the indirect help you bring to this project. We are so much awaiting this release of Roaring on the Meilisearch side, just to see those flamegraphs melt 🧊 Meilisearch and other projects intensively using roaring would also gain speed by using the new multi-ops API, however, it can be released in a future version as it will not be breaking! |
Thanks. I'm curious to see how the array_array SIMD does on other platforms
😂 I'm pleased to contribute to OSS again, it's been too long.
That reminds me. I'm going to create a planning ticket for |
@Kerollmops Do you think I should try to do a quick fix for #191 since the theme of this release is: 🚀 |
You can indeed if you have already a good idea of how you would speed this up! |
Just get rid of the in place operation and force an allocation like we have with union. |
@Kerollmops Release notes contains perf from unmerged xor change. AFAICT |
@Kerollmops Updated release notes for #187. Are we ready to bump the version and release? |
Yeah, I think we are ready to do so now. You are right that even if there are no breaking changes we should bump the version as we drastically impacted the performances of Thank you for reminding me! |
215: Bump the version to 0.9.0 r=Kerollmops a=Kerollmops The release notes are available in #178 and will be added to the GitHub release, thank you `@saik0` for the notes again! Co-authored-by: Kerollmops <[email protected]>
Hum... @saik0, I have a small issue when I try to publish the crate on crates.io: it seems that we can't publish a crate that depends on a git repository and that this dependency doesn't define the version of that crate that has been published to crates.io. However,
|
215: Bump the version to 0.9.0 r=Kerollmops a=Kerollmops The release notes are available in RoaringBitmap#178 and will be added to the GitHub release, thank you `@saik0` for the notes again! Co-authored-by: Kerollmops <[email protected]>
Here's what I think is still left before next release
*_with
deprecated methods #200Create bench comparison to CRoaring #204(deferred to next release)Release notes
Breaking changes
union_with
. Use the corresponding operators|=
.deserialize_from
validates inputs. It some cases it can be 4x slower. For workloads that are heavy in deserialization from trusted sources migrate todeserialize_unchecked_from
Performance optimizations
from_sorted_iter
andappend
are exponentially faster. They should be preferred overcollect
andextend
whenever adding monotonically increasing integers to the set as it's about 2-2.5x faster.New features
rank
Returns the number of integers that are <= value. rank(u64::MAX) == len()select
Returns then
th integer in the set orNone
ifn <= len()
union_len
intersection_len
... and so on. Compute the cardinality of a set operation without materializing it. Usually about twice as fast as materializing the bitmap.DoubleEndedIterator
ExactSizeIterator
(on 64 bit targets only)Other
Perf numbers are for pairwise operations on collections of bitmaps from real datasets.
Pairwise as in: B1 ∩ B2, B2 ∩ B3, ... BN-1 ∩ BN
The text was updated successfully, but these errors were encountered: