123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- #!/usr/bin/env python
- #
- # Copyright (c) 2018 Stefan Seefeld
- # All rights reserved.
- #
- # This file is part of Boost.uBLAS. It is made available under the
- # Boost Software License, Version 1.0.
- # (Consult LICENSE or http://www.boost.org/LICENSE_1_0.txt)
- import argparse
- import matplotlib.pyplot as plt
- import numpy as np
- class plot(object):
- def __init__(self, label, data):
- self.label = label
- self.data = data
- def load_file(filename):
- lines = open(filename, 'r').readlines()
- label = lines[0][1:-1].strip()
- lines = [l.strip() for l in lines]
- lines = [l.split('#', 1)[0] for l in lines]
- lines = [l for l in lines if l]
- data = [l.split() for l in lines]
- return plot(label, list(zip(*data)))
- def main(argv):
- parser = argparse.ArgumentParser(prog=argv[0], description='benchmark plotter')
- parser.add_argument('data', nargs='+', help='benchmark data to plot')
- parser.add_argument('--log', choices=['no', 'all', 'x', 'y'], help='use a logarithmic scale')
- args = parser.parse_args(argv[1:])
- runs = [load_file(d) for d in args.data]
- plt.title('Benchmark plot')
- plt.xlabel('size')
- plt.ylabel('time (s)')
- if args.log == 'all':
- plot = plt.loglog
- elif args.log == 'x':
- plot = plt.semilogx
- elif args.log == 'y':
- plot = plt.semilogy
- else:
- plot = plt.plot
- plots = [plot(r.data[0], r.data[1], label=r.label) for r in runs]
- plt.legend()
- plt.show()
- return True
-
- if __name__ == '__main__':
- import sys
- sys.exit(0 if main(sys.argv) else 1)
|