Index: tools/process_perf_combined.py |
=================================================================== |
--- tools/process_perf_combined.py (revision 0) |
+++ tools/process_perf_combined.py (revision 0) |
@@ -0,0 +1,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()) |
Property changes on: tools/process_perf_combined.py |
___________________________________________________________________ |
Added: svn:eol-style |
+ LF |