Python Package Manager Shootout (data by Lincoln Loop) #5243
matteius
started this conversation in
Show and tell
Replies: 1 comment
-
I am pretty excited about the performance optimization to batch_install that just released in |
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Lincoln Loop has put together an independent benchmark of python package managers over here: https://lincolnloop.github.io/python-package-manager-shootout/
This recent addition has provided great insight into
pipenv
and we had seen a few minor speed increases in the recent releases (I believe it began measuring in July) that can be attributed back to specific changes within pipenv. For example @dqkqd in release2022.8.5
has eliminated a temporary file usage, which logically could explain the performance bump we saw. I also have been hard at work removingpip-shims
which is reducing the amount of shimmed functions and patching, once it is dropped fromrequirementslib
(there is an open PR for this) we can drop it entirely from this project too.We also see in the initial run of
2022.8.13
a minor increase in run time for install and locking, which is plausible because of another awesome fix crafted by @dqkqd to provide a default constraints file when installing dev dependencies such that the dev dependencies do not violate constraints from the default packages. We explored this and it appears the only waypip
supports passing the constraints is via a file, so there is a new temp file to support this, in order to close out some bug reports. It also performs very close in line with the prior versions and future performance runs (which are currently scheduled every 6 hours) will be reflected on the graph upon run completions.I cannot express enough how amazing and great it is to have these kind of benchmarks available for us to compare our development efforts against. In programming, there is always the challenge of trying to balance complexity and solving real problems with wanting to achieve simplicity and performance.
Pipenv
is an organically grown project and the current maintainers are not the original authors of the code--in fact the project has been and continues to be a giant community effort to create a package manager that suites the needs of so many users. I feel that while we continue to make improvements, there is still ample opportunity to improve some of these code paths.From my own perspective on current development, I am hopeful with the the removal of
pip-shims
that the code will be less obfuscated in every contributor's IDE and the interfaces into our pip usages will become cleaner and easier to improve upon. Some longer term common themes I see in some issue reports are around supporting named package groups or categories, figuring out if there is a sane way to support--keep-outdated
flag (same for--selective-upgrade
) ... breaking apart core.py into a more organized module, enhancements and cleanup of our test runner and test cases, and much much more with the help of everyone that contributes.Beta Was this translation helpful? Give feedback.
All reactions