1*9c5db199SXin Li#!/usr/bin/python3 2*9c5db199SXin Lifrom __future__ import absolute_import 3*9c5db199SXin Lifrom __future__ import division 4*9c5db199SXin Lifrom __future__ import print_function 5*9c5db199SXin Li 6*9c5db199SXin Liimport os 7*9c5db199SXin Liimport re 8*9c5db199SXin Liimport sys 9*9c5db199SXin Li 10*9c5db199SXin Li 11*9c5db199SXin Lidef avg_deviation(values): 12*9c5db199SXin Li sum = 0 13*9c5db199SXin Li count = 0 14*9c5db199SXin Li 15*9c5db199SXin Li if not values: 16*9c5db199SXin Li return (0, 0) 17*9c5db199SXin Li for x in values: 18*9c5db199SXin Li sum += x 19*9c5db199SXin Li count += 1 20*9c5db199SXin Li average = sum / count 21*9c5db199SXin Li sum_sq_dev = 0 22*9c5db199SXin Li for x in values: 23*9c5db199SXin Li sum_sq_dev += (x - average) ** 2 24*9c5db199SXin Li std_dev = (sum_sq_dev / count)**0.5 25*9c5db199SXin Li return (average, 100 * std_dev / average) 26*9c5db199SXin Li 27*9c5db199SXin Li 28*9c5db199SXin Lilist = [] 29*9c5db199SXin Lifor line in sys.stdin.readlines(): 30*9c5db199SXin Li (user, system, elapsed, cpu) = line.split()[0:4] 31*9c5db199SXin Li user = float(re.match(r'([\d\.]+)', user).group(0)) 32*9c5db199SXin Li system = float(re.match(r'([\d\.]+)', system).group(0)) 33*9c5db199SXin Li m = re.match(r'(\d+):([\d\.]+)', elapsed) 34*9c5db199SXin Li elapsed = 60*int(m.group(1)) + float(m.group(2)) 35*9c5db199SXin Li cpu = int(re.match(r'(\d+)', cpu).group(0)) 36*9c5db199SXin Li 37*9c5db199SXin Li list.append((user, system, elapsed, cpu)) 38*9c5db199SXin Li 39*9c5db199SXin Liprint(" user: %0.2fs (%0.2f%%)" % avg_deviation([x[0] for x in list])) 40*9c5db199SXin Liprint(" system: %0.2fs (%0.2f%%)" % avg_deviation([x[1] for x in list])) 41*9c5db199SXin Liprint("elapsed: %0.2fs (%0.2f%%)" % avg_deviation([x[2] for x in list])) 42*9c5db199SXin Liprint(" cpu: %d%% (%0.2f%%)" % avg_deviation([x[3] for x in list])) 43