Skip to content

Commit 79f46b1

Browse files
committed
Extend testing and timing
1 parent 8292605 commit 79f46b1

File tree

1 file changed

+37
-12
lines changed
  • source-code/interfaciing-c-c++-fortran/Pybind11/Stats

1 file changed

+37
-12
lines changed
Lines changed: 37 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,40 @@
11
#!/usr/bin/env python
22

3+
import argparse
34
import numpy as np
4-
from stats import Statistics, compute_stats
5-
6-
n = 10
7-
data = np.empty(n)
8-
my_stats = Statistics()
9-
for i in range(n):
10-
value = 0.3*i
11-
my_stats.add(value)
12-
data[i] = value
13-
print(my_stats.mean())
14-
my_stats = compute_stats(data)
15-
print(my_stats.mean())
5+
import stats
6+
import timeit
7+
8+
9+
def compute_stats(data):
10+
my_stats = stats.Statistics()
11+
for value in data:
12+
my_stats.add(value)
13+
return my_stats
14+
15+
def main():
16+
parser = argparse.ArgumentParser(description='Compute statistics for a given number of random numbers')
17+
parser.add_argument('--n', type=int, default=10,
18+
help='number of data values')
19+
parser.add_argument('--repetitions', type=int, default=1,
20+
help='number of repetitions')
21+
parser.add_argument('--check', action='store_true',
22+
help='check the results')
23+
args = parser.parse_args()
24+
data = np.random.uniform(size=args.n)
25+
time = timeit.timeit(lambda: compute_stats(data), number=args.repetitions)
26+
print(f'{time/args.repetitions:.6f} s (Statistics iterative mean)')
27+
time = timeit.timeit(lambda: stats.compute_stats(data), number=args.repetitions)
28+
print(f'{time/args.repetitions:.6f} s (Statistics numpy access mean)')
29+
time = timeit.timeit(lambda: data.mean(), number=args.repetitions)
30+
print(f'{time/args.repetitions:.6f} s (numpy mean)')
31+
if args.check:
32+
print()
33+
my_stats = compute_stats(data)
34+
print(f'{my_stats.mean()} (Statistics iterative mean)')
35+
my_stats = stats.compute_stats(data)
36+
print(f'{my_stats.mean()} (Statistics numpy access mean)')
37+
print(f'{data.mean()} (numpy mean)')
38+
39+
if __name__ == '__main__':
40+
main()

0 commit comments

Comments
 (0)