-
Notifications
You must be signed in to change notification settings - Fork 607
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
perf: Optimize the command encoding #165
Conversation
cc #81 |
If #167 is merged a breaking release is needed anyways so perhaps it is fine to use |
ping @badboy |
I won't get to review it this week |
13c2660
to
ef7b84f
Compare
I rebased and squashed this since there was some files accidentally included and to fix the conflicts. |
I was just about to ask :D |
Test failures due to formatting (because I merged #167). I'm fine with merging as is and fixing afterwards. |
12ab1a7
to
4636985
Compare
Ah damn, of course this has merge conflicts now and thus will need a rebase (and resolving those conflicts). But otherwise I would be fine with merging it now. |
Changes the way commands are encoded to reduce the number of separate allocations made during encoding.
Rebased! |
Enable LTO on all wrappers.
Not as important as
IO
latency but can still be a decent throughput improvement.(Lots of variance in the benchmarks but there is still some clear improvements)
I could probably refactor to remove these breaking changes but for the moment...
BREAKING CHANGE
ToRedisArgs
has been changed to take take an instance ofRedisWrite
instead ofVec<Vec<u8>>
. Use thewrite_arg
method instead ofVec::push
.impl Iterator
is used which requires 1.26iter
now takesself
by value instead of cloningself
inside the method.