-
-
Notifications
You must be signed in to change notification settings - Fork 2k
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
SIMD Graceful Downgrade #703
Comments
TL;DR ripgrep without SIMD should be just fine for now. Overall, I'd say this is a dupe of #135. Graceful downgrades with a single binary is indeed the intended course of action here. If you're forced to use stable Rust (which I suspect you are), then that is blocked on Rust and there's really nothing we can do about it on the ripgrep end of things. (Note that I'm helping that effort upstream.) Today, however, it would be possible for me to put up release artifacts with graceful downgrade, but that requires switching the regex crate (and AFAIK, the ripgrep in other package repos is compiled without SIMD (e.g. Archlinux or Homebrew). |
Broadly speaking, there are two cases where SIMD in ripgrep helps:
Other than those two things, there shouldn't be a performance difference. ripgrep without SIMD still uses So I'd say "ripgrep gets faster in some cases with SIMD" today. Note that over time, I'd expect the number of cases to rise as I add more SIMD based optimizations, but I'd measure that on a scale of years. Hopefully SIMD will be in stable Rust before then. :-) |
Sounds good. A follow-up question: what are your thoughts about potentially having to support dependencies at versions greater than the ones that you have specified in the cargo file? |
@hlieberman I think the answer there is just keep upgrading the |
This should be fixed by #857 in the next release. |
Hello @BurntSushi!
I'm interested in getting ripgrep added to Debian (where it will trickle through to Ubuntu)! One of the things I've been watching for is support for SIMD landing in Rust's stable branch, as well as an ability to have a single binary that supports graceful downgrades to the minimal version of SIMD that they support. (AVX -> SSE -> none.)
I know most of that is blocked on upstream Rust, or worse, upstream LLVM. I could build a version that simply doesn't support SIMD at all, but I understand a lot of the benefit of ripgrep comes from there. What are your thoughts?
The text was updated successfully, but these errors were encountered: