| | import argparse
|
| | import pickle
|
| | import matplotlib.pyplot as plt
|
| |
|
| | def main(stats_file):
|
| | with open(stats_file, 'rb') as file:
|
| | stats = pickle.load(file)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| | times_by_num_instr = {}
|
| | interval = None
|
| | for sample in stats:
|
| | for key, value in sample.items():
|
| | num_instr, interval = key
|
| | if not interval:
|
| | interval = interval
|
| | else:
|
| | assert interval == interval
|
| |
|
| | if num_instr in times_by_num_instr:
|
| | times_by_num_instr[num_instr].extend(value)
|
| | else:
|
| | times_by_num_instr[num_instr] = value
|
| |
|
| | means = []
|
| | stds = []
|
| | for key, value in times_by_num_instr.items():
|
| | mean = sum(value) / len(value)
|
| | std = (sum([(x - mean)**2 for x in value]) / len(value))**.5
|
| | means.append(mean)
|
| | stds.append(std)
|
| |
|
| | plt.axhline(y=interval, linestyle='--', color='red', label='Real-time')
|
| | plt.errorbar(times_by_num_instr.keys(), means, yerr=stds, fmt='o')
|
| | plt.xlabel('Number of Instruments')
|
| | plt.ylabel('Time (s)')
|
| | plt.title(f'Generation Time of {interval}s Intervals by Number of Instruments')
|
| | plt.legend()
|
| | plt.show()
|
| |
|
| | if __name__ == "__main__":
|
| | parser = argparse.ArgumentParser(description='Plot benchmark data')
|
| | parser.add_argument('stats_file', type=str, help='Path to the stats file')
|
| | args = parser.parse_args()
|
| | main(args.stats_file) |