File: process_perf_combined.py

package info (click to toggle)
chromium-browser 41.0.2272.118-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 2,189,132 kB
  • sloc: cpp: 9,691,462; ansic: 3,341,451; python: 712,689; asm: 518,779; xml: 208,926; java: 169,820; sh: 119,353; perl: 68,907; makefile: 28,311; yacc: 13,305; objc: 11,385; tcl: 3,186; cs: 2,225; sql: 2,217; lex: 2,215; lisp: 1,349; pascal: 1,256; awk: 407; ruby: 155; sed: 53; php: 14; exp: 11
file content (45 lines) | stat: -rw-r--r-- 1,463 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#!/usr/bin/python
# Copyright (c) 2011 The Native Client Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

import re
import sys

# Combine chromium-style perf log output from multiple runs.
# Input is text *containing* the chrome buildbot perf format (may contain more)
# but the output is only the merged perf data (throws away the rest).

def ListToString(l):
  return '[%s]' % (','.join(l))


def Main():
  usage = 'usage: %prog < stdin\n'
  if len(sys.argv) != 1:
    sys.stderr.write(usage)
    sys.stderr.write('Instead, argv was %s\n' % str(sys.argv))
    return 1
  accumulated_times = {}
  result_matcher = re.compile(r'^RESULT (.*): (.*)= (.*) (.*)$')
  for line in sys.stdin.readlines():
    match = result_matcher.match(line)
    if match:
      graph, trace, value, unit = match.groups()
      key = (graph, trace)
      value_list, old_unit = accumulated_times.get(key, ([], None))
      if old_unit is not None:
        assert(unit == old_unit), (unit, old_unit)
      if isinstance(value, list):
        value_list += value
      else:
        value_list.append(value)
      accumulated_times[key] = (value_list, unit)
  for ((graph, trace), (values, unit)) in accumulated_times.iteritems():
    sys.stdout.write('RESULT %s: %s= %s %s\n' %
                     (graph, trace, ListToString(values), unit))
  return 0


if __name__ == '__main__':
  sys.exit(Main())