Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions pyperformance/data-files/benchmarks/MANIFEST
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ pprint <local>
pyflate <local>
python_startup <local>
python_startup_no_site <local:python_startup>
random <local>
raytrace <local>
regex_compile <local>
regex_dna <local>
Expand Down
10 changes: 10 additions & 0 deletions pyperformance/data-files/benchmarks/bm_random/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
[project]
name = "pyperformance_bm_random"
requires-python = ">=3.8"
dependencies = ["pyperf"]
urls = {repository = "https://github.com/python/pyperformance"}
dynamic = ["version"]

[tool.pyperformance]
name = "random"
tags = "math"
55 changes: 55 additions & 0 deletions pyperformance/data-files/benchmarks/bm_random/run_benchmark.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
"""Test the performance of random module.

This benchmark was available as `python -m random --test` in Python 3.13.

Authors: Hugo van Kemenade (original), Semyon Moroz (pyperformance port).
"""

import random

import pyperf


def bench_func(func, args):
def wrapper(loops):
range_it = range(loops)
t0 = pyperf.perf_counter()

for _ in range_it:
func(*args)

return pyperf.perf_counter() - t0

return wrapper


BENCHMARKS = (
# (func, args)
(random.random, ()),
(random.normalvariate, (0.0, 1.0)),
(random.lognormvariate, (0.0, 1.0)),
(random.vonmisesvariate, (0.0, 1.0)),
(random.binomialvariate, (15, 0.60)),
(random.binomialvariate, (100, 0.75)),
(random.gammavariate, (0.01, 1.0)),
(random.gammavariate, (0.1, 1.0)),
(random.gammavariate, (0.1, 2.0)),
(random.gammavariate, (0.5, 1.0)),
(random.gammavariate, (0.9, 1.0)),
(random.gammavariate, (1.0, 1.0)),
(random.gammavariate, (2.0, 1.0)),
(random.gammavariate, (20.0, 1.0)),
(random.gammavariate, (200.0, 1.0)),
(random.gauss, (0.0, 1.0)),
(random.betavariate, (3.0, 3.0)),
(random.triangular, (0.0, 1.0, 1.0 / 3.0)),
)


if __name__ == '__main__':
runner = pyperf.Runner()
runner.metadata['description'] = "random benchmark"

for func, args in BENCHMARKS:
name = f"random.{func.__name__}{args!r}"
runner.bench_time_func(name, bench_func(func, args))
Loading