Skip to main content

A simple benchmarking package.

Project description

A simple benchmarking package including visualization facilities.

The goal of this package is to provide a simple way to compare the performance of different approaches for different inputs and to visualize the result.

Documentation

Documentation Status

Downloads

PyPI Project GitHub Project

Installation

Using pip:

python -m pip install simple_benchmark

Or installing the most recent version directly from git:

python -m pip install git+https://github.com/MSeifert04/simple_benchmark.git

To utilize the all features of the library (for example visualization) you need to install the optional dependencies:

Or install them automatically using:

python -m pip install simple_benchmark[optional]

Getting started

Suppose you want to compare how NumPys sum and Pythons sum perform on lists of different sizes:

>>> from simple_benchmark import benchmark
>>> import numpy as np
>>> funcs = [sum, np.sum]
>>> arguments = {i: [1]*i for i in [1, 10, 100, 1000, 10000, 100000]}
>>> argument_name = 'list size'
>>> aliases = {sum: 'Python sum', np.sum: 'NumPy sum'}
>>> b = benchmark(funcs, arguments, argument_name, function_aliases=aliases)

The result can be visualized with pandas (needs to be installed):

>>> b
          Python sum  NumPy sum
1       9.640884e-08   0.000004
10      1.726930e-07   0.000004
100     7.935484e-07   0.000008
1000    7.040000e-06   0.000042
10000   6.910000e-05   0.000378
100000  6.899000e-04   0.003941

Or with matplotlib (has to be installed too):

>>> b.plot()

To save the plotted benchmark as PNG file:

>>> import matplotlib.pyplot as plt
>>> plt.savefig('sum_example.png')
./docs/source/sum_example.png

Command-Line interface

It’s an experiment to run it as command-line tool, especially useful if you want to run it on multiple files and don’t want the boilerplate.

File sum.py:

import numpy as np

def bench_sum(l, func=sum):  # <-- function name needs to start with "bench_"
   return func(l)

def bench_numpy_sum(l, func=np.sum):  # <-- using func parameter with the actual function helps
   return np.sum(l)

def args_list_length():  # <-- function providing the argument starts with "args_"
   for i in [1, 10, 100, 1000, 10000, 100000]:
      yield i, [1] * i

Then run:

$ python -m simple_benchmark sum.py sum.png

With a similar result:

./docs/source/sum_example_cli.png

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

simple_benchmark-0.1.0.tar.gz (13.1 kB view details)

Uploaded Source

File details

Details for the file simple_benchmark-0.1.0.tar.gz.

File metadata

  • Download URL: simple_benchmark-0.1.0.tar.gz
  • Upload date:
  • Size: 13.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.6.1 requests/2.25.0 setuptools/50.3.2 requests-toolbelt/0.9.1 tqdm/4.54.0 CPython/3.9.0

File hashes

Hashes for simple_benchmark-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2be6a87ef024c1387ec54de8792e80192080cb0572ebd049fdb1b60388d4251e
MD5 9fc5d775264265f591d0eed00e7cd6e0
BLAKE2b-256 b0b1f0183b9abcc3f507e51303558a56e4750823ebb1ca857403fbea6e6b2f99

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