Skip to main content

Utils for benchmark.

Project description

Benchmark utils

Utils for benchmark - wrapper over python timeit.

PyPI - Python Version PyPI Status
Tests Codecov

Tested on python 3.7 - 3.11

Install

Install from pypi:

pip install benchmark_utils

Or install from github repo:

pip install git+https://github.com/ayasyrev/benchmark_utils.git

Basic use.

Lets benchmark some (dump) functions.

from time import sleep

def func_to_test_1(sleep_time: float = 0.1, mult: int = 1) -> None:
    """simple 'sleep' func for test"""
    sleep(sleep_time * mult)


def func_to_test_2(sleep_time: float = 0.11, mult: int = 1) -> None:
    """simple 'sleep' func for test"""
    sleep(sleep_time * mult)

Let's create benchmark.

from benchmark_utils import Benchmark
bench = Benchmark(
    [func_to_test_1, func_to_test_2],
)
bench
output
Benchmark(func_to_test_1, func_to_test_2)

Now we can benchmark that functions.

bench()
output
 Func name  | Sec / run
func_to_test_1:   0.10 0.0%
func_to_test_2:   0.11 -9.6%

We can run it again, all functions, some of it, exclude some and change number of repeats.

bench.run(num_repeats=10)
output
 Func name  | Sec / run
func_to_test_1:   0.10 0.0%
func_to_test_2:   0.11 -8.8%

After run, we can prunt results - sorted or not, reversed, compare results with best or not.

bench.print_results(reverse=True)
output
 Func name  | Sec / run
func_to_test_2:   0.11 0.0%
func_to_test_1:   0.10 9.7%

We can add functions to bencmark as list of funtions (or partial) ar as dictionary: {"name": function}.

bench = Benchmark([
    func_to_test_1,
    partial(func_to_test_1, 0.12),
    partial(func_to_test_1, sleep_time=0.11),
])
bench
output
Benchmark(func_to_test_1, func_to_test_1(0.12), func_to_test_1(sleep_time=0.11))
bench.run()
output
 Func name  | Sec / run
func_to_test_1:   0.10 0.0%
func_to_test_1(sleep_time=0.11):   0.11 -8.9%
func_to_test_1(0.12):   0.12 -16.5%
bench = Benchmark({
    "func_1": func_to_test_1,
    "func_2": func_to_test_2,
})
bench
output
Benchmark(func_1, func_2)

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

benchmark_utils-0.2.3.tar.gz (12.6 kB view hashes)

Uploaded Source

Built Distribution

benchmark_utils-0.2.3-py3-none-any.whl (10.0 kB view hashes)

Uploaded Python 3

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