mbligh | 6cc64ff | 2006-12-14 22:36:38 +0000 | [diff] [blame] | 1 | #!/usr/bin/python |
| 2 | import sys, os, re |
| 3 | |
| 4 | def avg_deviation(values): |
jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame^] | 5 | sum = 0 |
| 6 | count = 0 |
mbligh | 6cc64ff | 2006-12-14 22:36:38 +0000 | [diff] [blame] | 7 | |
jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame^] | 8 | if not values: |
| 9 | return (0, 0) |
| 10 | for x in values: |
| 11 | sum += x |
| 12 | count += 1 |
| 13 | average = sum / count |
| 14 | sum_sq_dev = 0 |
| 15 | for x in values: |
| 16 | sum_sq_dev += (x - average) ** 2 |
| 17 | std_dev = (sum_sq_dev / count)**0.5 |
| 18 | return (average, 100 * std_dev / average) |
mbligh | 6cc64ff | 2006-12-14 22:36:38 +0000 | [diff] [blame] | 19 | |
| 20 | |
jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame^] | 21 | list = [] |
mbligh | 6cc64ff | 2006-12-14 22:36:38 +0000 | [diff] [blame] | 22 | for line in sys.stdin.readlines(): |
jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame^] | 23 | (user, system, elapsed, cpu) = line.split()[0:4] |
| 24 | user = float(re.match(r'([\d\.]+)', user).group(0)) |
| 25 | system = float(re.match(r'([\d\.]+)', system).group(0)) |
| 26 | m = re.match(r'(\d+):([\d\.]+)', elapsed) |
| 27 | elapsed = 60*int(m.group(1)) + float(m.group(2)) |
| 28 | cpu = int(re.match(r'(\d+)', cpu).group(0)) |
mbligh | 6cc64ff | 2006-12-14 22:36:38 +0000 | [diff] [blame] | 29 | |
jadmanski | 0afbb63 | 2008-06-06 21:10:57 +0000 | [diff] [blame^] | 30 | list.append((user, system, elapsed, cpu)) |
mbligh | 6cc64ff | 2006-12-14 22:36:38 +0000 | [diff] [blame] | 31 | |
| 32 | print " user: %0.2fs (%0.2f%%)" % avg_deviation([x[0] for x in list]) |
| 33 | print " system: %0.2fs (%0.2f%%)" % avg_deviation([x[1] for x in list]) |
| 34 | print "elapsed: %0.2fs (%0.2f%%)" % avg_deviation([x[2] for x in list]) |
| 35 | print " cpu: %d%% (%0.2f%%)" % avg_deviation([x[3] for x in list]) |