3 from optparse import OptionParser
5 from pprint import pprint
9 def add_entry(d, nspes, speedup, work_incr):
10 if d.has_key(work_incr):
11 d[work_incr].append((nspes, speedup))
13 d[work_incr] = [(nspes, speedup)]
18 items = [float(x) for x in line.split()]
19 # print "items =", items
21 work_incr = int(1e6 * items[1])
23 add_entry(d, nspes, speedup, work_incr)
27 class plot_data(object):
28 def __init__(self, filenames, output_filename):
29 self.fig = figure(1, figsize=(8, 6), facecolor='w')
30 self.sp = self.fig.add_subplot(1,1,1)
31 self.sp.set_xlabel("nspes", fontweight="bold")
32 self.sp.set_ylabel("speedup", fontweight="bold")
34 # print 'rcParams["legend.fontsize"] =', rcParams["legend.fontsize"]
35 rcParams["legend.fontsize"] = 10
49 if len(filenames) == 1:
51 d = parse_file(open(f))
52 self.make_single_plot(d, f)
56 d = parse_file(open(f))
57 self.make_plot(d, f, f == filenames[0])
60 savefig(output_filename)
65 def make_single_plot(self, d, filename):
67 return self.markers[k]
69 tag, ext = os.path.splitext(os.path.basename(filename))
75 vlist = d[k] # list of 2-tuples
76 xs = [v[0] for v in vlist]
77 ys = [v[1] for v in vlist]
78 plot(xs, ys, style(k), label="%d us" % (k,))
82 def make_plot(self, d, filename, first):
85 return self.markers[k]
87 return 'k' + self.markers[k]
89 tag, ext = os.path.splitext(os.path.basename(filename))
94 vlist = d[k] # list of 2-tuples
95 xs = [v[0] for v in vlist]
96 ys = [v[1] for v in vlist]
97 plot(xs, ys, style(k), label="%s %d us" % (tag, k))
102 usage="%prog: [options] input_filename..."
103 description = "Plot R*.avg files from benchmark_nop.py"
104 parser = OptionParser(usage=usage, description=description)
105 parser.add_option('-o', '--output', default=None, metavar="FILE",
106 help="generate .png file")
107 (options, args) = parser.parse_args()
113 dc = plot_data(filenames, options.output)
117 if __name__ == '__main__':
120 except KeyboardInterrupt: