Skip to main content

Performance plots for Python code snippets

Project description

perfplot

PyPi Version PyPI pyversions GitHub stars Downloads

Discord

gh-actions codecov LGTM Code style: black

perfplot extends Python's timeit by testing snippets with input parameters (e.g., the size of an array) and plotting the results.

For example, to compare different NumPy array concatenation methods, the script

import numpy as np
import perfplot

perfplot.show(
    setup=lambda n: np.random.rand(n),  # or setup=np.random.rand
    kernels=[
        lambda a: np.c_[a, a],
        lambda a: np.stack([a, a]).T,
        lambda a: np.vstack([a, a]).T,
        lambda a: np.column_stack([a, a]),
        lambda a: np.concatenate([a[:, None], a[:, None]], axis=1),
    ],
    labels=["c_", "stack", "vstack", "column_stack", "concat"],
    n_range=[2**k for k in range(25)],
    xlabel="len(a)",
    # More optional arguments with their default values:
    # logx="auto",  # set to True or False to force scaling
    # logy="auto",
    # equality_check=np.allclose,  # set to None to disable "correctness" assertion
    # show_progress=True,
    # target_time_per_measurement=1.0,
    # max_time=None,  # maximum time per measurement
    # time_unit="s",  # set to one of ("auto", "s", "ms", "us", or "ns") to force plot units
    # relative_to=1,  # plot the timings relative to one of the measurements
    # flops=lambda n: 3*n,  # FLOPS plots
)

produces

Clearly, stack and vstack are the best options for large arrays.

(By default, perfplot asserts the equality of the output of all snippets, too.)

If your plot takes a while to generate, you can also use

perfplot.live(
    # ...
)
live

with the same arguments as above. It will plot the updates live.

Benchmarking and plotting can be separated. This allows multiple plots of the same data, for example:

out = perfplot.bench(
    # same arguments as above (except the plot-related ones, like time_unit or log*)
)
out.show()
out.save("perf.png", transparent=True, bbox_inches="tight")

Other examples:

Installation

perfplot is available from the Python Package Index, so simply do

pip install perfplot

to install.

Testing

To run the perfplot unit tests, check out this repository and type

tox

License

This software is published under the GPLv3 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

perfplot-0.10.2.tar.gz (25.0 kB view details)

Uploaded Source

Built Distribution

perfplot-0.10.2-py3-none-any.whl (21.2 kB view details)

Uploaded Python 3

File details

Details for the file perfplot-0.10.2.tar.gz.

File metadata

  • Download URL: perfplot-0.10.2.tar.gz
  • Upload date:
  • Size: 25.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for perfplot-0.10.2.tar.gz
Algorithm Hash digest
SHA256 d76daa72334564b5c8825663f24d15db55ea33e938b34595a146e5e44ed87e41
MD5 9ce15ea9cc24617444108f007f41727d
BLAKE2b-256 974151d8b9caa150a050de16a229f627e4b37515dbff0075259e4e75aff7218b

See more details on using hashes here.

File details

Details for the file perfplot-0.10.2-py3-none-any.whl.

File metadata

  • Download URL: perfplot-0.10.2-py3-none-any.whl
  • Upload date:
  • Size: 21.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.25.1

File hashes

Hashes for perfplot-0.10.2-py3-none-any.whl
Algorithm Hash digest
SHA256 545ce0f7f22509ad00092d79a794cdc6e9805383e6cedab2bfed3519a7ef4e19
MD5 791c42c2b55e26831387f443f477a545
BLAKE2b-256 2085ffaf2c1f92d17916c089a5c860d23b3117398f19f467fd1de1026d03aebc

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page