PyOverdrive vs Bottleneck in 2026
PyOverdrive and Bottleneck side by side: what each does for NumPy code, licence and price, install steps and questions to ask before you pick.
SayDeploy is published by LunarWerx, which makes some of the tools compared here.
Bottleneck's page describes fast NumPy array functions written in C [1]. PyOverdrive lets existing NumPy code use faster paths after one call, and anything unsupported runs on stock NumPy [2]. Bottleneck is distributed under a Simplified BSD license [1], and PyOverdrive is open source under the MIT License [2].
| Option | Price | Licence | Install | Python needed |
|---|---|---|---|---|
| Bottleneck | Not published | Simplified BSD license [1] | Binary wheels on PyPI for the most common platforms [1] | Greater than 3.9; source-install requirements not stated [1] |
| PyOverdrive | Not published | MIT License [2] | pip straight from the GitHub repository [2] | 3.12 or newer [2] |
The short answer
Bottleneck's own page describes its contents as fast NumPy array functions written in C [1]. PyOverdrive changes how your existing NumPy code runs: after you call pyoverdrive.enable(), supported NumPy functions use faster paths, and calls it does not support run on stock NumPy [2].
On the needs each tool meets, Bottleneck's sources cover fast NumPy array functions written in C [1] and ready made installs through binary wheels on PyPI for the most common platforms [1]. PyOverdrive's sources cover faster paths for code you already have [2], a check before a fast path runs [2], a self check on your own machine [2] and ways to turn paths off [2].
What Bottleneck is built for
Bottleneck's own page says it is a collection of fast NumPy array functions written in C [1]. The page says Bottleneck provides binary wheels on PyPI, the Python package index, for all the most common platforms [1].
It is distributed under a Simplified BSD license [1]. The sources given here say nothing more about what it covers, so check its own documentation for the array types and the list of functions.
What PyOverdrive is built for
PyOverdrive is made by the team that publishes this site.
Calling pyoverdrive.enable() patches supported NumPy functions so your existing code uses faster paths, and calls it does not support run on stock NumPy [2]. A fast path runs only when a check confirms the input is in its measured range, and anything else, or a fast path that raises an error, goes to stock NumPy [2].
pyoverdrive.explain() tells you which path a call would take and why, without running the call [2]. You can turn off one fast path with disable_path() or PYOVERDRIVE_DISABLE, or call pyoverdrive.disable() to restore the original NumPy functions [2].
For math on arrays, np.sin, cos, tan, exp, log, log10 and tanh on C-contiguous float64 and float32 arrays use threaded paths, which spread the work across processor cores, above a size floor calibrated per operation and data type [2]. Two linear algebra calls, np.linalg.qr and np.linalg.eigvalsh, use faster paths when you give them many small matrices, such as large stacks of 3x3 matrices, and for eigvalsh only above a size threshold [2]. Large np.einsum calls go through NumPy's own optimize=True planner once they pass a measured size threshold [2]. np.isin on 1-D StringDType or object arrays can use hash-set membership [2].
Pricing and fees
The Bottleneck facts given here include no price or fee, so a price is not published here. They do say it is distributed under a Simplified BSD license [1].
PyOverdrive is open source under the MIT License [2]. The claims given here include no price, so a price is not published here.
Neither source describes a fee on top of another company's fee, a subscription or an account. If cost matters for your team, read the licence text of each project and check whether you need paid support from anyone, since the sources here do not cover that.
Setting it up and daily use
Bottleneck's page lists binary wheels on PyPI for all the most common platforms [1]. Installing from source has its own Python and NumPy requirements, so check its own pages for those, since the facts cited here do not state them on this page. The sources here say nothing more about its daily use.
PyOverdrive is installed with pip straight from the GitHub repository [2]. It needs Python 3.12 or newer [2]. The package is marked OS independent, and its test suite has been run on Windows and on Linux x86-64 [2].
Day to day, you call pyoverdrive.enable() once and your existing NumPy code uses supported faster paths [2]. python -m pyoverdrive --demo times the headline operations with stock NumPy and with PyOverdrive on your machine, in about 20 seconds [2]. python -m pyoverdrive --selfcheck compares every fast path with stock NumPy on your own machine [2]. python -m pyoverdrive --calibrate re-times the threaded paths at their own thresholds on your CPU and switches off any that do not pay there [2].
Things to check before you choose
Check which NumPy functions and array types your code uses. PyOverdrive's claims name specific functions and size thresholds [2]. For Bottleneck, check its own documentation for which array types it accelerates, since the facts cited here do not state them on this page.
Check your Python version. PyOverdrive needs Python 3.12 or newer [2]. For Bottleneck, check its own pages for the Python and NumPy versions a source install needs.
Check the maturity of each tool. PyOverdrive's version is 1.0.0 and its status is Beta [2]. Look at Bottleneck's own pages for its release state, since the facts here do not give it.
Check how you will confirm results on your own data. PyOverdrive has a demo and a self check that run on your machine [2] [2]. For Bottleneck, check its own pages for the benchmarking tools it ships.
Check whether you need to switch a change off. PyOverdrive describes ways to do so [2]. PyOverdrive's fast paths run only when a check confirms the input is in its measured range [2].
How to choose
If you want a collection of fast NumPy array functions written in C, Bottleneck's page describes that [1].
If you want a ready made package for common platforms, Bottleneck's page mentions binary wheels on PyPI [1].
If you want existing NumPy code to use faster paths after one call, with unsupported calls staying on stock NumPy, PyOverdrive's claims describe that [2].
If you want to see which path a call would take and why, PyOverdrive's claims describe that [2].
If you want a timing on your own machine against stock NumPy, PyOverdrive's claims describe a demo [2].
If you are on Python older than 3.12, PyOverdrive's stated minimum is 3.12 [2]. For Bottleneck, check its own pages for the Python and NumPy versions a source install needs.
If you want a bundled benchmark suite, check Bottleneck's own documentation, since the facts cited here do not describe it on this page.
Frequently asked questions
Is PyOverdrive a replacement for NumPy?
PyOverdrive's claims say calling pyoverdrive.enable() patches supported NumPy functions so your existing code uses faster paths [2]. Calls it does not support run on stock NumPy [2]. You can also call pyoverdrive.disable() to restore the original NumPy functions [2].
What does Bottleneck do for NumPy arrays?
Bottleneck's page says it is a collection of fast NumPy array functions written in C [1]. It is distributed under a Simplified BSD license [1]. Check its own documentation for which array types and functions it covers, since the facts cited here do not state them on this page.
How do you install PyOverdrive and Bottleneck?
PyOverdrive is installed with pip straight from the GitHub repository [2], and it needs Python 3.12 or newer [2]. Bottleneck provides binary wheels on PyPI for all the most common platforms [1]. For a source install of Bottleneck, check its own pages for the Python and NumPy versions it needs, since the facts cited here do not state them on this page.
Does PyOverdrive check whether a faster path should run?
PyOverdrive's claims say a fast path runs only when a check confirms the input is in its measured range [2]. Anything else, or a fast path that raises an error, goes to stock NumPy [2]. pyoverdrive.explain() also tells you which path a call would take and why, without running the call [2].
Are PyOverdrive and Bottleneck free and open source?
PyOverdrive is open source under the MIT License [2]. Bottleneck is distributed under a Simplified BSD license [1]. Neither source here states a price, so no price is published here. Check each project's own pages and licence text if you need more detail on support or future plans.
It is open source under the MIT License. [2]
Try PyOverdriveSources
Related comparisons
- Best NumPy acceleration libraries in 2026
- Best NumPy acceleration libraries for data scientists in 2026
- Best NumPy acceleration libraries for quant analysts in 2026
- Best NumPy acceleration libraries for scientific Python users
- Bottleneck alternatives in 2026 for NumPy speed
- Bottleneck vs CuPy in 2026: Pricing, Setup and Features
- Bottleneck vs Cython in 2026: Pricing, Setup, Features
- Bottleneck vs Dask in 2026: NumPy Acceleration Compared
- Bottleneck vs dpnp in 2026: Pricing, Setup and Features
- Bottleneck vs JAX in 2026: Pricing, Setup and Features