| #!/usr/bin/python |
| import sys, os, re |
| |
| def avg_deviation(values): |
| sum = 0 |
| count = 0 |
| |
| if not values: |
| return (0, 0) |
| for x in values: |
| sum += x |
| count += 1 |
| average = sum / count |
| sum_sq_dev = 0 |
| for x in values: |
| sum_sq_dev += (x - average) ** 2 |
| std_dev = (sum_sq_dev / count)**0.5 |
| return (average, 100 * std_dev / average) |
| |
| |
| list = [] |
| for line in sys.stdin.readlines(): |
| (user, system, elapsed, cpu) = line.split()[0:4] |
| user = float(re.match(r'([\d\.]+)', user).group(0)) |
| system = float(re.match(r'([\d\.]+)', system).group(0)) |
| m = re.match(r'(\d+):([\d\.]+)', elapsed) |
| elapsed = 60*int(m.group(1)) + float(m.group(2)) |
| cpu = int(re.match(r'(\d+)', cpu).group(0)) |
| |
| list.append((user, system, elapsed, cpu)) |
| |
| print " user: %0.2fs (%0.2f%%)" % avg_deviation([x[0] for x in list]) |
| print " system: %0.2fs (%0.2f%%)" % avg_deviation([x[1] for x in list]) |
| print "elapsed: %0.2fs (%0.2f%%)" % avg_deviation([x[2] for x in list]) |
| print " cpu: %d%% (%0.2f%%)" % avg_deviation([x[3] for x in list]) |