blob: ba4e92c9546690a500d70d968226f403be27c217 [file] [log] [blame]
#!/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.items():
sys.stdout.write('RESULT %s: %s= %s %s\n' %
(graph, trace, ListToString(values), unit))
return 0
if __name__ == '__main__':
sys.exit(Main())