Welcome to simple_benchmark's documentation! ============================================ Installation ------------ Using ``pip``: .. code:: python -m pip install simple_benchmark Or installing the most recent version directly from ``git``: .. code:: 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: - `NumPy `_ - `pandas `_ - `matplotlib `_ Or install them automatically using: .. code:: 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') .. image:: ./sum_example.png Command-Line interface ---------------------- .. warning:: The command line interface is highly experimental. It's very likely to change its API. 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): return func(l) def bench_numpy_sum(l, func=np.sum): return np.sum(l) def args_list_length(): 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 ``sum.png``: .. image:: ./sum_example_cli.png .. toctree:: :maxdepth: 2 :caption: Contents: extended command_line api changes license development Indices and tables ================== * :ref:`genindex` * :ref:`modindex` * :ref:`search`