xref: /aosp_15_r20/external/autotest/client/tools/oprofile_diff (revision 9c5db1993ded3edbeafc8092d69fe5de2ee02df7)
1#!/usr/bin/python3
2from __future__ import absolute_import
3from __future__ import division
4from __future__ import print_function
5
6import re
7import sys
8
9def parse_file(filename):
10    data = {}
11    for line in open(filename):
12        if re.match('\d', line):
13            (samples, percent, symbol) = line.split()
14            data[symbol] = float(percent)
15    return data
16
17
18data1 = parse_file(sys.argv[1])
19data2 = parse_file(sys.argv[2])
20
21delta = {}
22for symbol in list(data1.keys()) + list(data2.keys()):
23    delta[symbol] = data1.get(symbol, 0) - data2.get(symbol, 0)
24
25def lookup_delta(symbol):
26    return delta[symbol]
27
28sorted_deltas = sorted(list(delta.keys()), key=lookup_delta, reverse=True)
29
30if len(sorted_deltas) > 40:
31    sorted_deltas = sorted_deltas[0:20] + sorted_deltas[-20:]
32
33for symbol in sorted_deltas:
34    print('%2.3f %s' % (delta[symbol], symbol))
35