Skip to main content

SimpleBench is a modern Python framework for benchmarking and performance testing of code.

As such it has the following goals:

  • Simple to use for simple benchmarks

  • Powerful enough to handle sophisticated benchmarking needs out-of-the-box

  • Flexible enough to handle complex custom benchmarking scenarios

  • Extensible to allow users to add their own functionality as needed

  • Full API and command-line interface support

Current Status

Alpha release 0.8.0-alpha.0

Functionally complete but not yet 100% tested or documented. There may be breaking changes before reaching version 1.0.

Additional report formats and benchmark options are planned.

Installing

Minimum Python Version: 3.10

From PyPI

  python -m pip install simplebench
  python -m pip install simplebench[graphs]
  python -m pip install simplebench[all]

From Source

git clone https://github.com/JerilynFranz/python-simplebench
cd python-simplebench
python3 -m pip install .[all]

Documentation

Basic Example

This is a basic example of creating and running a benchmark using SimpleBench. It demonstrates how to define a benchmark function, run it, and view an output report on the console. There are more detailed examples and tutorials in the documentation.

SimpleBench supports numerous benchmark options, report formats, command-line options, and customization points - this example focuses on the simplest case.

Defining a Benchmark

import simplebench

@simplebench.benchmark
def addition_benchmark():
    """A simple addition benchmark of Python's built-in sum function."""
   sum(range(1000))

if __name__ == "__main__":
    simplebench.main()

Running a Benchmark

  python my_benchmark_script.py --rich-table.ops --progress

Benchmark Output

This will run the addition_benchmark function and generate a rich table report of its performance.

                                                             addition_benchmark
                                                            operations per second

                                        A simple addition benchmark of Python's built-in sum function.
┏━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━━━━━━┳━━━━━━━━┓
┃        ┃            ┃        ┃ Elapsed ┃    mean    ┃   median   ┃           ┃            ┃            ┃             ┃  std dev   ┃        ┃
┃   N    ┃ Iterations ┃ Rounds ┃ Seconds ┃   kOps/s   ┃   kOps/s   ┃ min Ops/s ┃ max kOps/s ┃ 5th kOps/s ┃ 95th kOps/s ┃   kOps/s   ┃  rsd%  ┃
┡━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━━━━━━╇━━━━━━━━┩
│      1 │    46701   │      1 │  0.32   │    148.00  │    149.00  │   876.00  │    153.00  │    143.00  │    151.00   │      8.99  │  6.08% │
└────────┴────────────┴────────┴─────────┴────────────┴────────────┴───────────┴────────────┴────────────┴─────────────┴────────────┴────────┘

Authors and acknowledgments

  • Jerilyn Franz

Inspiration

“Simple things should be simple and complex things should be possible.” Alan Kay

“… with proper design, the features come cheaply. This approach is arduous, but continues to succeed.” Dennis Ritchie

License

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for simplebench 0.8.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for simplebench 0.8.0
File Size Uploaded
simplebench-0.8.0.tar.gz 282.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for simplebench 0.8.0
File Interpreter ABI Platform
simplebench-0.8.0-py3-none-any.whl Python 3 none any Details

Total release size: 538.0 kB

Release files / simplebench-0.8.0.tar.gz

Download URL simplebench-0.8.0.tar.gz
Size 282.0 kB
Tags Source
SHA-256 checksum
How to use checksums
190f3f994fe2e51093f0066dfec22693a62c950525e63a4963c42d06d4981c3b
BLAKE2b-256 checksum
How to use checksums
07cbb8592a5f89b2f1f09fc919c400812cab55a73dd3816f445508645fdac4ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release files / simplebench-0.8.0-py3-none-any.whl

Download URL simplebench-0.8.0-py3-none-any.whl
Size 256.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d0bb3552d43c363247e4dad953e74dd83ff53ca5b5b0e62edc222913c9cb2ef5
BLAKE2b-256 checksum
How to use checksums
c1d4db11cae18bd5049a63727127e3fbd9fca6e0bb3e36bd7078ee749fa7708c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.8.0 This release

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page