{
  "id": 7118159,
  "title": "A warm pip install took me 13 seconds. uv took 56 milliseconds.",
  "url": "https://urgent.news/2026/09/13/a-warm-pip-install-took-me-13-seconds-uv-took-56-milliseconds",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-09-13T14:33:00.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/remdore/a-warm-pip-install-took-me-13-seconds-uv-took-56-milliseconds-3ehp"
  },
  "original_language": "en",
  "account": "A recent pip install of a typical web backend took 13 seconds on the reporter's machine, while the same install with uv completed in just 56 milliseconds. This significant difference led the reporter to investigate further. The uv package installer, created by Astral, the company behind the Ruff linter, is marketed as being 10 to 100 times faster than pip.\n\nTo test this claim, the reporter built a requirements file resembling a real-world deployment, including FastAPI, uvicorn, SQLAlchemy, Alembic, Pydantic, Celery, Redis, pandas, numpy, pillow, and more. The installer was tested four ways, three times each: pip and uv, both from a cold cache into a fresh virtual environment and from a warm cache into a fresh virtual environment. The results showed that uv was significantly faster in warm cache mode.\n\nThe warm numbers, where uv is truly faster, need explanation. In cold cache mode, uv is about five times faster, primarily due to parallel downloads. However, when uv installs software, it still performs actual filesystem operations for each package, such as copying and running the install machinery. These operations account for the 13 seconds it takes to install 63 packages. In contrast, uv uses a content-addressed global store and hard-links files, making the installation process much quicker, as it only creates metadata links instead of copying data.\n\nThis method results in approximately 56 milliseconds for installing 63 packages. The key difference is that uv doesn't copy files; it links to existing files on disk. This explains the 236 times speed increase in warm cache mode. However, the hard-link trick only works when the cache and environment live on the same filesystem. If they're on different disks, uv falls back to copying, which is four times slower than linking.\n\nThe reporter emphasizes that the hard links are a significant advantage, but they're not the only reason uv is faster. It also resolves and unpacks packages in parallel using Rust, unlike pip's sequential Python approach. Even when forced to copy files like pip does, uv remains about forty times faster due to these parallel processes. The practical implications of this are substantial, particularly for continuous integration (CI) pipelines where environments need to be rebuilt frequently. By switching from pip to uv, a Python backend site like ExtraTime could reduce environment build times from 13 to 26 seconds to sub-second warm times or even five seconds cold on a runner without a cache. Essentially, changing the installer to uv provides notable time savings in a task performed hundreds of times weekly.",
  "summary": "A warm pip install of a normal web backend took 13 seconds on my machine. The same install with uv took 56 milliseconds. Not 56 milliseconds faster. 56 milliseconds total, for 63 packages, including numpy and pandas and pillow. I did not believe it either, so I ran it enough times to be sure the number was real and not a no-op. It is real, and the reason it is real is the interesting part. What I…",
  "key_points": [],
  "editors_take": null,
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}