Skip to content

Commit 49206dc

Browse files
committed
Add the random benchmark
1 parent 56d12a8 commit 49206dc

File tree

3 files changed

+66
-0
lines changed

3 files changed

+66
-0
lines changed

pyperformance/data-files/benchmarks/MANIFEST

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ pprint <local>
7171
pyflate <local>
7272
python_startup <local>
7373
python_startup_no_site <local:python_startup>
74+
random <local>
7475
raytrace <local>
7576
regex_compile <local>
7677
regex_dna <local>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
[project]
2+
name = "pyperformance_bm_random"
3+
requires-python = ">=3.8"
4+
dependencies = ["pyperf"]
5+
urls = {repository = "https://github.com/python/pyperformance"}
6+
dynamic = ["version"]
7+
8+
[tool.pyperformance]
9+
name = "random"
10+
tags = "math"
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
"""Test the performance of random module.
2+
3+
This benchmark was available as `python -m random --test` in Python 3.13.
4+
5+
Authors: Hugo van Kemenade (original), Semyon Moroz (pyperformance port).
6+
"""
7+
8+
import random
9+
10+
import pyperf
11+
12+
13+
def bench_func(func, args):
14+
def wrapper(loops):
15+
range_it = range(loops)
16+
t0 = pyperf.perf_counter()
17+
18+
for _ in range_it:
19+
func(*args)
20+
21+
return pyperf.perf_counter() - t0
22+
23+
return wrapper
24+
25+
26+
BENCHMARKS = (
27+
# (func, args)
28+
(random.random, ()),
29+
(random.normalvariate, (0.0, 1.0)),
30+
(random.lognormvariate, (0.0, 1.0)),
31+
(random.vonmisesvariate, (0.0, 1.0)),
32+
(random.binomialvariate, (15, 0.60)),
33+
(random.binomialvariate, (100, 0.75)),
34+
(random.gammavariate, (0.01, 1.0)),
35+
(random.gammavariate, (0.1, 1.0)),
36+
(random.gammavariate, (0.1, 2.0)),
37+
(random.gammavariate, (0.5, 1.0)),
38+
(random.gammavariate, (0.9, 1.0)),
39+
(random.gammavariate, (1.0, 1.0)),
40+
(random.gammavariate, (2.0, 1.0)),
41+
(random.gammavariate, (20.0, 1.0)),
42+
(random.gammavariate, (200.0, 1.0)),
43+
(random.gauss, (0.0, 1.0)),
44+
(random.betavariate, (3.0, 3.0)),
45+
(random.triangular, (0.0, 1.0, 1.0 / 3.0)),
46+
)
47+
48+
49+
if __name__ == '__main__':
50+
runner = pyperf.Runner()
51+
runner.metadata['description'] = "random benchmark"
52+
53+
for func, args in BENCHMARKS:
54+
name = f"random.{func.__name__}{args!r}"
55+
runner.bench_time_func(name, bench_func(func, args))

0 commit comments

Comments
 (0)