From 49206dc9c5974006eb0fd08987da8e540fe70ad1 Mon Sep 17 00:00:00 2001 From: donBarbos Date: Wed, 12 Mar 2025 14:48:45 +0400 Subject: [PATCH 1/2] Add the `random` benchmark --- pyperformance/data-files/benchmarks/MANIFEST | 1 + .../benchmarks/bm_random/pyproject.toml | 10 ++++ .../benchmarks/bm_random/run_benchmark.py | 55 +++++++++++++++++++ 3 files changed, 66 insertions(+) create mode 100644 pyperformance/data-files/benchmarks/bm_random/pyproject.toml create mode 100644 pyperformance/data-files/benchmarks/bm_random/run_benchmark.py diff --git a/pyperformance/data-files/benchmarks/MANIFEST b/pyperformance/data-files/benchmarks/MANIFEST index 2d2e5bf5..55ce5408 100644 --- a/pyperformance/data-files/benchmarks/MANIFEST +++ b/pyperformance/data-files/benchmarks/MANIFEST @@ -71,6 +71,7 @@ pprint pyflate python_startup python_startup_no_site +random raytrace regex_compile regex_dna diff --git a/pyperformance/data-files/benchmarks/bm_random/pyproject.toml b/pyperformance/data-files/benchmarks/bm_random/pyproject.toml new file mode 100644 index 00000000..b7aebaee --- /dev/null +++ b/pyperformance/data-files/benchmarks/bm_random/pyproject.toml @@ -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" diff --git a/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py b/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py new file mode 100644 index 00000000..c3ff4004 --- /dev/null +++ b/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py @@ -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)) From 65022f0464457c11abd6722ee334455b3a6167e3 Mon Sep 17 00:00:00 2001 From: donBarbos Date: Thu, 13 Mar 2025 15:49:41 +0400 Subject: [PATCH 2/2] Update run_benchmark.py Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com> --- pyperformance/data-files/benchmarks/bm_random/run_benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py b/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py index c3ff4004..bc04f4a4 100644 --- a/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py +++ b/pyperformance/data-files/benchmarks/bm_random/run_benchmark.py @@ -2,7 +2,7 @@ This benchmark was available as `python -m random --test` in Python 3.13. -Authors: Hugo van Kemenade (original), Semyon Moroz (pyperformance port). +Authors: Guido van Rossum (original), Semyon Moroz (pyperformance port). """ import random