Skip to main content

Simple benchmarking library for comparing algorithm runtime

Project description

Benchmark

A simple, easy-to-use Python benchmarking library for comparing algorithm performance.

Features

  • 🚀 Simple API - Compare multiple algorithms with just a few lines of code
  • 📊 Detailed Results - Get setup time, total time, average time, and performance comparisons
  • 🔄 Progress Tracking - Real-time progress updates during long-running benchmarks
  • 🛡️ Error Handling - Gracefully handles algorithm failures without stopping the entire benchmark
  • 📈 Performance Ratios - Automatically shows how much slower each algorithm is compared to the best

Installation

pip install benchmark

Quick Start

import benchmark

# Define your algorithms to compare
algorithms = [
    {
        "title": "Bubble Sort",
        "algorithm_fn": bubble_sort,
        "setup_fn": lambda: [3, 1, 4, 1, 5, 9, 2, 6]
    },
    {
        "title": "Python's sorted()",
        "algorithm_fn": sorted,
        "setup_fn": lambda: [3, 1, 4, 1, 5, 9, 2, 6]
    }
]

# Run the benchmark
results = benchmark.run(algorithms, REPEAT=1000)

Usage

Basic Example

import benchmark

def algorithm1(data):
    return sorted(data)

def algorithm2(data):
    return list(reversed(sorted(data, reverse=True)))

algorithms = [
    {
        "title": "Standard sort",
        "algorithm_fn": algorithm1,
        "setup_fn": lambda: [5, 2, 8, 1, 9]
    },
    {
        "title": "Reverse then reverse",
        "algorithm_fn": algorithm2,
        "setup_fn": lambda: [5, 2, 8, 1, 9]
    }
]

results = benchmark.run(algorithms, REPEAT=10000, verbose=True)

Output Example

[1/2] Running: Standard sort... Done (0.05s)
[2/2] Running: Reverse then reverse... Done (0.08s)

Benchmark Results:
Standard sort                       setup: 0.0000s  total: 0.0500s  avg: 5.00us <-- BEST
Reverse then reverse                setup: 0.0000s  total: 0.0800s  avg: 8.00us (1.60x slower)

API Reference

benchmark.run(algorithms, REPEAT=1000, verbose=True)

Run a benchmark comparing multiple algorithms.

Parameters:

  • algorithms (List[Dict]): List of algorithm dictionaries with keys:
    • algorithm_fn (Callable): The function to benchmark
    • title (str): Display name for the algorithm
    • setup_fn (Callable, optional): Function called before timing to prepare test data
  • REPEAT (int, default=1000): Number of times to run each algorithm
  • verbose (bool, default=True): Whether to print progress and results

Returns:

  • List[Dict]: Results for each algorithm containing:
    • title: Algorithm name
    • setup_time: Time spent in setup
    • total_time: Total execution time
    • avg_time: Average time per iteration
    • last_result: Result from the last iteration
    • total_perf: Combined setup + execution time
    • error: Error message if the algorithm failed, None otherwise

Examples

See the included demo in benchmark.py which compares sorting algorithms:

  • Bubble Sort
  • Timsort (Python's built-in sorted())
  • Heap Sort
  • Quicksort

Requirements

  • Python >= 3.7

License

MIT License

Author

ControlAltPete (peter@petertheobald.com)

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_function_benchmark-0.1.3.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simple_function_benchmark-0.1.3-py3-none-any.whl (4.3 kB view details)

Uploaded Python 3

File details

Details for the file simple_function_benchmark-0.1.3.tar.gz.

File metadata

File hashes

Hashes for simple_function_benchmark-0.1.3.tar.gz
Algorithm Hash digest
SHA256 5833e5cd3ae2d17c4bd6b9a6005a8b0af7d1ec0cf4dd69d554a81a7a1c3b5c64
MD5 10fafdd152ffc9bcfb4d10e76bcb24c3
BLAKE2b-256 7dda083a7224971e558146adc76665ca8567d2be0ab5821f8cb6571fbee0dce0

See more details on using hashes here.

File details

Details for the file simple_function_benchmark-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for simple_function_benchmark-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 5c8be9e7c6d29a4d42c5d9dc6dcab551a7a67ed84988af2a942e37d9c6e1db02
MD5 c4f6fc4f5599f55568071469d1b5f693
BLAKE2b-256 06aeac4d19fa42a7ff5ed2d2f9d6116c2c6eec4a06a3076a69d6d21b91902d76

See more details on using hashes here.

Supported by

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