xref: /aosp_15_r20/external/autotest/autotest_lib/client/tools/avgtime (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
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