SayDeploy Plain comparisons of developer tools, AI coding tools included

Bottleneck vs dpnp in 2026

Bottleneck and dpnp compared on what each is built for, how each installs, its license, and what to check before you choose one for NumPy work.

By SayDeploy ยท

SayDeploy is published by LunarWerx, which makes some of the tools compared here.

Bottleneck offers a set of fast NumPy array functions written in C [1]. dpnp is a library that can be installed with conda, mamba or pip package managers [2]. Bottleneck's page says only arrays holding int32, int64, float32 and float64 numbers are accelerated [1], while the dpnp facts available here do not say which operations it covers, so check its own pages for that. PyOverdrive patches supported NumPy functions when you call pyoverdrive.enable(), and calls it does not support run on stock NumPy [3].

OptionLicenseInstall methodPython requirementCost
BottleneckSimplified BSD license [1]Binary wheels on PyPI for the most common platforms [1]Source install needs Python newer than 3.9 and NumPy 1.16.0 or higher [1]No price stated in its facts
dpnpBSD-3-Clause license [2]conda, mamba or pip package managers [2]Not stated in the facts hereNo price stated in the facts here
PyOverdriveMIT License, open source [3]pip from the GitHub repository [3]Python 3.12 or newer [3]No price stated in its claims

The short answer

Bottleneck is a collection of fast NumPy array functions written in C [1]. dpnp is a library that can be installed with conda, mamba or pip package managers [2]. The dpnp facts available here say nothing about which operations it covers, so its own pages should be checked for that.

On needs, Bottleneck's page says only arrays holding int32, int64, float32 and float64 numbers are accelerated, and other kinds run through slower functions that are not accelerated [1]. Its page also says it comes with a benchmark suite [1]. PyOverdrive's claims describe faster paths for trigonometric and logarithmic functions on float64 and float32 arrays [3], direct formula routines for small matrices in large batches [3], NumPy's own planner for large einsum calls [3], and a lookup table method for isin on one-dimensional text or object arrays [3].

What Bottleneck and dpnp are built for

Bottleneck's own page calls it a collection of fast NumPy array functions written in C [1]. Only arrays holding int32, int64, float32 and float64 numbers are accelerated, and other data types use slower unaccelerated functions [1]. The page says it comes with a benchmark suite [1]. It provides binary wheels on PyPI for the most common platforms [1]. Source install requires Python newer than 3.9 and NumPy 1.16.0 or higher [1]. Bottleneck is distributed under a Simplified BSD license [1].

The dpnp repository is published under the BSD-3-Clause license [2]. It can be installed using conda, mamba or pip package managers [2]. The dpnp facts available here say nothing about which operations it accelerates or how it behaves on arrays, so check its own pages before judging it on those points.

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 [3]. A fast path runs only when a check confirms the input is in its measured range; anything else, or a fast path that raises an error, goes to stock NumPy [3].

The threaded paths cover np.sin, cos, tan, exp, log, log10 and tanh on float64 and float32 arrays stored as one continuous block of memory, and each runs only above a size floor set per operation and data type, in the range of 3e5 to 3e6 elements [3]. For linear algebra, np.linalg.qr on large stacks of 3x3 matrices uses a direct formula method, and np.linalg.eigvalsh has direct formula paths for 2x2 and 3x3 batches of floats above a size threshold [3]. Large np.einsum calls go through NumPy's own optimize=True planner once they pass a measured size threshold [3]. np.isin on one-dimensional text or object arrays can use hash-set membership instead of the default method [3].

python -m pyoverdrive --selfcheck compares every fast path with stock NumPy on your own machine [3]. 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 [3]. pyoverdrive.explain() tells you which path a call would take and why, without running the call [3].

Pricing and fees

Bottleneck is distributed under a Simplified BSD license [1]. No price is stated in its facts, so this page does not give one.

The dpnp repository is published under the BSD-3-Clause license [2]. No price is stated in the dpnp facts available here.

PyOverdrive is open source under the MIT License [3]. No price is stated in its claims, so none is given here. Check each project's own pages for paid support, sponsorship or hosted plans, since these facts do not cover them.

Setting it up and daily use

Bottleneck provides binary wheels on PyPI for the most common platforms [1]. Source install requires Python newer than 3.9 and NumPy 1.16.0 or higher [1]. The Bottleneck facts here say nothing about routine use, so check its own pages for day to day guidance.

dpnp can be installed using conda, mamba or pip package managers [2]. The dpnp facts here say nothing about setup beyond that or about daily use, so its own pages should be consulted.

PyOverdrive needs Python 3.12 or newer [3]. You install it with pip straight from the GitHub repository [3]. The package is marked OS independent, and its test suite has been run on Windows and on Linux x86-64 [3]. Daily, you call pyoverdrive.enable() to patch supported NumPy functions [3], and pyoverdrive.disable() restores the original NumPy functions [3]. You can turn off one fast path with disable_path() or by setting PYOVERDRIVE_DISABLE [3]. Running python -m pyoverdrive --demo times the headline operations with stock NumPy and with PyOverdrive on your machine in about 20 seconds [3].

Things to check before you choose

Ask which kinds of numbers your arrays hold. Bottleneck accelerates only int32, int64, float32 and float64 arrays [1]. PyOverdrive's threaded paths cover float64 and float32 arrays stored as one continuous block of memory, above a calibrated size floor [3]. The dpnp facts here do not state its supported types, so check its own pages.

Ask which operations you need. Bottleneck's page describes a collection of fast array functions [1], and the facts here do not list them, so check its own pages for the full set. PyOverdrive's claims name specific operations, including sin, cos, tan, exp, log, log10, tanh, linalg.qr, linalg.eigvalsh, einsum and isin [3] [3] [3] [3].

Check your Python version. Bottleneck's source install needs Python newer than 3.9 [1], and PyOverdrive needs Python 3.12 or newer [3].

Check what happens when a fast path does not apply. PyOverdrive sends such calls to stock NumPy [3]. Bottleneck runs unsupported data types through unaccelerated functions [1].

How to choose

If you need fast NumPy array functions written in C for int32, int64, float32 and float64 arrays, Bottleneck's page describes that [1] [1].

If you need a library installable with conda, mamba or pip under a BSD-3-Clause license, dpnp's repository is published that way [2] [2]. Check dpnp's own pages for what it accelerates.

If you want one call that patches supported NumPy functions so existing code uses faster paths while unsupported calls run on stock NumPy, PyOverdrive's claims describe that [3] [3].

If you want threaded paths for trigonometric and logarithmic functions on float64 and float32 arrays [3], direct formula linear algebra for small matrices in large batches [3], NumPy's planner for large einsum calls [3], or hash-set isin on text and object arrays [3], PyOverdrive's claims describe those.

If you want to check fast paths on your own machine, PyOverdrive's selfcheck compares every fast path with stock NumPy [3]. Bottleneck comes with a benchmark suite [1].

Frequently asked questions

Is Bottleneck free to use?

Bottleneck is distributed under a Simplified BSD license [1]. No price is stated in its facts, so this page does not give one. Its page says it provides binary wheels on PyPI for the most common platforms [1]. Check its own pages for paid support, sponsorship or commercial plans, since these facts do not cover them.

Is dpnp free to use?

The dpnp repository is published under the BSD-3-Clause license [2]. The library can be installed using conda, mamba or pip package managers [2]. No price is stated in the dpnp facts available here, so none is given. Check its own pages for support or enterprise options, since these facts do not cover them.

How do you install Bottleneck and dpnp?

Bottleneck provides binary wheels on PyPI for the most common platforms [1]. Source install requires Python newer than 3.9 and NumPy 1.16.0 or higher [1]. dpnp can be installed using conda, mamba or pip package managers [2]. PyOverdrive needs Python 3.12 or newer and is installed with pip straight from the GitHub repository [3] [3].

Can PyOverdrive fall back to stock NumPy?

A fast path runs only when a check confirms the input is in its measured range; anything else, or a fast path that raises an error, goes to stock NumPy [3]. You can turn off one fast path with disable_path() or by setting PYOVERDRIVE_DISABLE, or call pyoverdrive.disable() to restore the original NumPy functions [3]. Calling pyoverdrive.explain() shows which path a call would take and why, without running it [3].

Does Bottleneck accelerate every NumPy data type?

No. Only arrays holding int32, int64, float32 and float64 numbers are accelerated, and other data types use slower unaccelerated functions [1]. Bottleneck is a collection of fast NumPy array functions written in C [1]. The facts available here do not list the full set of functions it accelerates, so check its own pages for that.

It is open source under the MIT License. [3]

Try PyOverdrive

Sources

  1. Bottleneck, github.com/pydata/bottleneck, read 2026-10-07
  2. dpnp, github.com/IntelPython/dpnp, read 2026-10-09
  3. PyOverdrive's own description of itself (the product of this site's publisher)

Related comparisons