perf_stats.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. """Computes statistiscs from raw performance results."""
  2. import sys
  3. import argparse
  4. from collections import defaultdict
  5. import utils
  6. def main():
  7. arg_parser = argparse.ArgumentParser()
  8. arg_parser.add_argument('input', help='The performance data file.')
  9. args = arg_parser.parse_args()
  10. perf_data = utils.parse_perf_data(args.input)
  11. for quantity, opt_level_dict in perf_data.items():
  12. for opt_level, data_points in opt_level_dict:
  13. perf_per_test = defaultdict(list)
  14. for test_name, measurement in data_points:
  15. perf_per_test[test_name].append(measurement)
  16. for test_name, measurement_list in perf_per_test.items():
  17. avg = utils.mean(measurement_list)
  18. utils.write_perf_entry_to_stream(
  19. test_name, opt_level, quantity, avg, sys.stdout)
  20. if len(measurement_list) > 1:
  21. standard_dev = utils.standard_deviation(measurement_list)
  22. utils.write_perf_entry_to_stream(
  23. test_name, opt_level, quantity + '-standard-deviation',
  24. standard_dev, sys.stdout)
  25. utils.write_perf_entry_to_stream(
  26. test_name, opt_level, quantity + '-relative-standard-deviation',
  27. standard_dev / avg if avg != 0.0 else 0.0, sys.stdout)
  28. utils.write_perf_entry_to_stream(
  29. test_name, opt_level, quantity + '-sample-size',
  30. len(measurement_list), sys.stdout)
  31. if __name__ == '__main__':
  32. main()