uv
a0494bb0 - Fetch concurrently for non-first-match index strategies (#10432)

Comment changes are shownComment changes are hidden
Commit
159 days ago
Fetch concurrently for non-first-match index strategies (#10432) ## Summary On a basic test, this speeds up cold resolution by about 25%: ``` ❯ hyperfine "uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache" "../target/release/uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache" --warmup 10 --runs 30 Benchmark 1: uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache Time (mean ± σ): 585.8 ms ± 28.2 ms [User: 149.7 ms, System: 97.4 ms] Range (min … max): 541.5 ms … 654.8 ms 30 runs Benchmark 2: ../target/release/uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache Time (mean ± σ): 468.3 ms ± 52.0 ms [User: 131.7 ms, System: 76.9 ms] Range (min … max): 380.2 ms … 607.0 ms 30 runs Summary ../target/release/uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache ran 1.25 ± 0.15 times faster than uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache ``` Given: ```toml [project] name = "foo" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.12.0" dependencies = [ "black>=24.10.0", "django>=5.1.4", "flask>=3.1.0", "requests>=2.32.3", ] ``` And: ```shell hyperfine "uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache" "../target/release/uv lock --extra-index-url https://download.pytorch.org/whl/cpu --index-strategy unsafe-best-match --upgrade --no-cache" --warmup 10 --runs 30 ``` Closes https://github.com/astral-sh/uv/issues/10429.
Author
Parents
  • crates/uv-client/src
    • File
      registry_client.rs