]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/numeric/ublas/benchmarks/plot.py
import new upstream nautilus stable release 14.2.8
[ceph.git] / ceph / src / boost / libs / numeric / ublas / benchmarks / plot.py
1 #!/usr/bin/env python
2 #
3 # Copyright (c) 2018 Stefan Seefeld
4 # All rights reserved.
5 #
6 # This file is part of Boost.uBLAS. It is made available under the
7 # Boost Software License, Version 1.0.
8 # (Consult LICENSE or http://www.boost.org/LICENSE_1_0.txt)
9
10 import argparse
11 import matplotlib.pyplot as plt
12 import numpy as np
13
14
15 class plot(object):
16
17 def __init__(self, label, data):
18 self.label = label
19 self.data = data
20
21
22 def load_file(filename):
23
24 lines = open(filename, 'r').readlines()
25 label = lines[0][1:-1].strip()
26 lines = [l.strip() for l in lines]
27 lines = [l.split('#', 1)[0] for l in lines]
28 lines = [l for l in lines if l]
29 data = [l.split() for l in lines]
30 return plot(label, list(zip(*data)))
31
32
33 def main(argv):
34
35 parser = argparse.ArgumentParser(prog=argv[0], description='benchmark plotter')
36 parser.add_argument('data', nargs='+', help='benchmark data to plot')
37 parser.add_argument('--log', choices=['no', 'all', 'x', 'y'], help='use a logarithmic scale')
38 args = parser.parse_args(argv[1:])
39 runs = [load_file(d) for d in args.data]
40 plt.title('Benchmark plot')
41 plt.xlabel('size')
42 plt.ylabel('time (s)')
43 if args.log == 'all':
44 plot = plt.loglog
45 elif args.log == 'x':
46 plot = plt.semilogx
47 elif args.log == 'y':
48 plot = plt.semilogy
49 else:
50 plot = plt.plot
51 plots = [plot(r.data[0], r.data[1], label=r.label) for r in runs]
52 plt.legend()
53 plt.show()
54 return True
55
56
57 if __name__ == '__main__':
58
59 import sys
60 sys.exit(0 if main(sys.argv) else 1)