-
Notifications
You must be signed in to change notification settings - Fork 38
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: don't redundantly add incompatibilities (1.5x speedup) #29
Conversation
I'd say it would be odd to do it the other way actually. It's logical to group versions by packages in Looks good! |
I marked this as Draft as when rebased on #32 it is not clear that it pulls its weight. We will need to reevaluate after a new benchmark is made/found. |
I did some work on new benchmarks, and it looks like this is still 1.5x after #32. The new benchmarks will hopefully have a PR up later today. Having slept on it, A variation on this that guarantees that |
Looks good! I'm not sure what you mean by
but any useful and performance-sensitive retriever will be kept around for more than one |
I pushed another commit that impls my idea, it means that we only call |
I thought Cargo would store in |
It's safer to move one step first, and then evaluate with other benchmarks the impact of caching dependencies. We can safely merge the simple version once #32 lands, then re-evaluate. |
f577da7
to
426fca3
Compare
Good plan. Backed out the complications.
It does have a copy of crates.io-index in |
This follows up on #19 (comment), by adding a cache of get_dependencies already called. For me the benchmark 0.175 sec -> 0.086 sec so that is a big win!
The odd type
Map<P, Set<V>>
instead of___Set<(P, V)>
is because(P, V)
does not implHash
norOrd
.