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
48 if len(filenames) == 1:
50 d = parse_file(open(f))
51 self.make_single_plot(d, f)
55 d = parse_file(open(f))
56 self.make_plot(d, f, f == filenames[0])
59 savefig(output_filename)
64 def make_single_plot(self, d, filename):
66 return self.markers[k]
68 tag, ext = os.path.splitext(os.path.basename(filename))
74 vlist = d[k] # list of 2-tuples
75 xs = [v[0] for v in vlist]
76 ys = [v[1] for v in vlist]
77 plot(xs, ys, style(k), label="%d us" % (k,))
81 def make_plot(self, d, filename, first):
84 return self.markers[k]
86 return 'k' + self.markers[k]
88 tag, ext = os.path.splitext(os.path.basename(filename))
93 vlist = d[k] # list of 2-tuples
94 xs = [v[0] for v in vlist]
95 ys = [v[1] for v in vlist]
96 plot(xs, ys, style(k), label="%s %d us" % (tag, k))
101 usage="%prog: [options] input_filename..."
102 description = "Plot R*.avg files from benchmark_nop.py"
103 parser = OptionParser(usage=usage, description=description)
104 parser.add_option('-o', '--output', default=None, metavar="FILE",
105 help="generate .png file")
106 (options, args) = parser.parse_args()
112 dc = plot_data(filenames, options.output)
116 if __name__ == '__main__':
119 except KeyboardInterrupt: