-
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
Benchmark on crates.io index #44
Comments
I think python dependencies do Anyway conda is a better package manager for python, and it does have an index file. |
Registry of all elm packages since elm 0.14, which represents 11079 distinct package versions + 11 elm versions: I have done some rudimentary cleaning but not tried to solve dependencies yet, might need some additional cleaning. |
That is wonderful! I started by using dev and looping over all versions and running the SAT test against it. All passed! |
loved the edit history ahah |
While working on solving all packages from crates.io, I noted that there are some that go slow. I thought it may be interesting to look into one of them on its own. For example "zuse" took a while, so I made a ron file from just its transitive dependencies |
#104 has made "zuse" less interesting. I have been using a "hobo" example for a while, but it was very slow to run with our benchmarking tools because of synthetic packages. Recent improvements to my importing code have reduced the need for the synthetic packages. So here is a new import of "hobo": hobo2_str_SemanticVersion.zip |
It is a bit far from now, but one thing that would be great to optimize "real-world" performances would be to use "real-world" packages registries. For example, we could build the index of crates.io and make a benchmark that would solve dependencies for the last version of every crate. It would take into account the performances of both the pubgrub implementation and a dependency retriever implementation.
Solving dependencies of crates.io is not possible for the time being though since we don't handle all the possibilities that cargo enables. But we could probably simplify the index in ways that enables benchmarking even if we don't support everything yet. Features could for example be removed from the index. We could consider only versions below 1.0 if we don't want to handle multiple major. Remove packages using pre-releases or replacements etc.
Alternatively, we could start with simpler indexes from other programming languages. I think for example that we could already solve elm packages. I don't know about others.
Ultimate test would probably be solving dependencies of all NPM packages ahah. That could be a blog post XD.
The text was updated successfully, but these errors were encountered: