perf_stats.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  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(
  9. 'input', help='The performance data file.', nargs='?', default=None)
  10. args = arg_parser.parse_args()
  11. perf_data = utils.parse_perf_data(args.input)
  12. for quantity, opt_level_dict in perf_data.items():
  13. for opt_level, data_points in opt_level_dict:
  14. perf_per_test = defaultdict(list)
  15. for test_name, measurement in data_points:
  16. perf_per_test[test_name].append(measurement)
  17. for test_name, measurement_list in perf_per_test.items():
  18. avg = utils.mean(measurement_list)
  19. utils.write_perf_entry_to_stream(
  20. test_name, opt_level, quantity, avg, sys.stdout)
  21. if len(measurement_list) > 1:
  22. standard_dev = utils.standard_deviation(measurement_list)
  23. utils.write_perf_entry_to_stream(
  24. test_name, opt_level, quantity + '-standard-deviation',
  25. standard_dev, sys.stdout)
  26. utils.write_perf_entry_to_stream(
  27. test_name, opt_level, quantity + '-relative-standard-deviation',
  28. standard_dev / avg if avg != 0.0 else 0.0, sys.stdout)
  29. utils.write_perf_entry_to_stream(
  30. test_name, opt_level, quantity + '-sample-size',
  31. len(measurement_list), sys.stdout)
  32. if __name__ == '__main__':
  33. main()