44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
|   | #!/usr/bin/env python | ||
|  | 
 | ||
|  | import matplotlib | ||
|  | matplotlib.use('Agg') | ||
|  | 
 | ||
|  | import matplotlib.pyplot as plt | ||
|  | import json | ||
|  | import sys | ||
|  | 
 | ||
|  | stages_to_counters = {} | ||
|  | stages_to_time = {} | ||
|  | 
 | ||
|  | if len(sys.argv) != 2: | ||
|  |     print("USAGE: {} <input file>".format(sys.argv[0])) | ||
|  |     sys.exit(1) | ||
|  | 
 | ||
|  | with open(sys.argv[1]) as fh: | ||
|  |     for line in fh.readlines(): | ||
|  |         if "COUNTER" in line: | ||
|  |             json_part = line[line.find("{"):] | ||
|  |             x = json.loads(json_part) | ||
|  |             counter = x['name'] | ||
|  |             if not (counter in stages_to_counters): | ||
|  |                 stages_to_counters[counter] = [] | ||
|  |                 stages_to_time[counter] = [] | ||
|  |             stages_to_counters[counter].append(x['counts']) | ||
|  |             stages_to_time[counter].append(x['now']) | ||
|  | 
 | ||
|  | fig, ax = plt.subplots() | ||
|  | 
 | ||
|  | for stage in stages_to_counters.keys(): | ||
|  |     plt.plot(stages_to_time[stage], stages_to_counters[stage], label=stage) | ||
|  | 
 | ||
|  | plt.xlabel('ms') | ||
|  | plt.ylabel('count') | ||
|  | 
 | ||
|  | plt.legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3, | ||
|  |            ncol=2, mode="expand", borderaxespad=0.) | ||
|  | 
 | ||
|  | plt.locator_params(axis='x', nbins=10) | ||
|  | plt.grid(True) | ||
|  | 
 | ||
|  | plt.savefig("perf.pdf") |