-
Notifications
You must be signed in to change notification settings - Fork 19
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
Big refactoring #30
Big refactoring #30
Conversation
Sorry for a mega-PR, but I've been tinkering with upgrading dependencies and fixing the big-endian problems. In trying to recoup performance, all of these changes got intertwined. At a high level: - Bump all crates to 0.3 to account for breaking changes. - Upgrade to smallvec 1 -- raises the minimum Rust to 1.36. - Various dev-dependencies are upgraded as well. - `primal_bit::BitVec` now stores a `Vec<u8>`, and no longer exposes methods that depend on endianness. Fixes huonw#10. - A lot of the wheel operations were byte-oriented already, so they really depended on little-endian order before. With `Vec<u8>`, even big-endian targets have the expected byte order to find bits. - Iterators specialize methods like `fold` and `all` for performance. We should probably update to 2018 edition too, but I didn't bother yet.
r? @huonw (rust_highfive has picked a reviewer for you, use r? to override) |
I used critcmp to compare criterion results with the master branch. It's a little weird in that instead of just calculating from old to new, it holds the fastest one as 1.00 on each benchmark (in bold green, but the color's not showing here), and reports the ratio >1 for the other.
|
This comment has been minimized.
This comment has been minimized.
Codecov Report
@@ Coverage Diff @@
## master #30 +/- ##
==========================================
- Coverage 51.22% 49.45% -1.77%
==========================================
Files 17 17
Lines 3934 4531 +597
==========================================
+ Hits 2015 2241 +226
- Misses 1919 2290 +371
Continue to review full report at Codecov.
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For the little that this is worth (as an absent maintainer), this direction looks great to me.
@huonw I do appreciate your review, absent or not. 🙂 If there are no further comments, I think I'll merge and publish it this afternoon. |
bors r+ |
30: Big refactoring r=cuviper a=cuviper Sorry for a mega-PR, but I've been tinkering with upgrading dependencies and fixing the big-endian problems. In trying to recoup performance, all of these changes got intertwined. At a high level: - Bump all crates to 0.3 to account for breaking changes. - Upgrade to smallvec 1 -- raises the minimum Rust to 1.36. - Various dev-dependencies are upgraded as well. - `primal_bit::BitVec` now stores a `Vec<u8>`, and no longer exposes methods that depend on endianness. Fixes #10. - A lot of the wheel operations were byte-oriented already, so they really depended on little-endian order before. With `Vec<u8>`, even big-endian targets have the expected byte order to find bits. - Iterators specialize methods like `fold` and `all` for performance. We should probably update to 2018 edition too, but I didn't bother yet. Co-authored-by: Josh Stone <[email protected]>
err, let's try that with your review reflected, at least. |
bors r- |
Canceled. |
bors r=huonw |
30: Big refactoring r=huonw a=cuviper Sorry for a mega-PR, but I've been tinkering with upgrading dependencies and fixing the big-endian problems. In trying to recoup performance, all of these changes got intertwined. At a high level: - Bump all crates to 0.3 to account for breaking changes. - Upgrade to smallvec 1 -- raises the minimum Rust to 1.36. - Various dev-dependencies are upgraded as well. - `primal_bit::BitVec` now stores a `Vec<u8>`, and no longer exposes methods that depend on endianness. Fixes #10. - A lot of the wheel operations were byte-oriented already, so they really depended on little-endian order before. With `Vec<u8>`, even big-endian targets have the expected byte order to find bits. - Iterators specialize methods like `fold` and `all` for performance. We should probably update to 2018 edition too, but I didn't bother yet. Co-authored-by: Josh Stone <[email protected]>
Build failed: |
bors r=huonw |
30: Big refactoring r=huonw a=cuviper Sorry for a mega-PR, but I've been tinkering with upgrading dependencies and fixing the big-endian problems. In trying to recoup performance, all of these changes got intertwined. At a high level: - Bump all crates to 0.3 to account for breaking changes. - Upgrade to smallvec 1 -- raises the minimum Rust to 1.36. - Various dev-dependencies are upgraded as well. - `primal_bit::BitVec` now stores a `Vec<u8>`, and no longer exposes methods that depend on endianness. Fixes #10. - A lot of the wheel operations were byte-oriented already, so they really depended on little-endian order before. With `Vec<u8>`, even big-endian targets have the expected byte order to find bits. - Iterators specialize methods like `fold` and `all` for performance. We should probably update to 2018 edition too, but I didn't bother yet. Co-authored-by: Josh Stone <[email protected]>
Build failed: |
All good by me 👍 |
Great, thanks! I'm just working through CI now... bors r=huonw |
Build succeeded: |
Sorry for a mega-PR, but I've been tinkering with upgrading dependencies
and fixing the big-endian problems. In trying to recoup performance, all
of these changes got intertwined. At a high level:
primal_bit::BitVec
now stores aVec<u8>
, and no longer exposesmethods that depend on endianness. Fixes primal fails on big-endian machines #10.
really depended on little-endian order before. With
Vec<u8>
, evenbig-endian targets have the expected byte order to find bits.
fold
andall
for performance.We should probably update to 2018 edition too, but I didn't bother yet.