Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(355)

Unified Diff: tools/testing/perf_testing/calc_and_send_mail.py

Issue 9235046: Daily update script for performance numbers (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: fix Created 8 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | tools/testing/perf_testing/create_graph.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/testing/perf_testing/calc_and_send_mail.py
===================================================================
--- tools/testing/perf_testing/calc_and_send_mail.py (revision 0)
+++ tools/testing/perf_testing/calc_and_send_mail.py (revision 0)
@@ -0,0 +1,141 @@
+#!/usr/bin/python
+
+# Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+import create_graph
+from create_graph import BROWSER_CORRECTNESS
+from create_graph import BROWSER_PERF
+from create_graph import CL_PERF
+from create_graph import COMMAND_LINE
+from create_graph import CORRECTNESS
+from create_graph import FROG
+from create_graph import FROG_MEAN
+from create_graph import TIME_SIZE
+from create_graph import V8_AND_FROG
+
+import get_current_stats
+import os
+from os.path import dirname, abspath
+import pickle
+import sys
+
+"""Compare the current performance statistics with the statistics 24 hours ago,
+and send out an email summarizing the differences."""
+
+def calculate_stats():
+ """Compare the numbers that were available at the start of the day to what the
+ current numbers are.
+
+ Returns:
+ A string providing an update on the latest perfromance numbers."""
+ test_runner_dict = pickle.load(open(get_current_stats.PICKLE_FILENAME, 'r'))
+ test_runner_dict = get_current_stats.populate_stats_dict(test_runner_dict)
+
+ browser_perf = test_runner_dict[BROWSER_PERF]
+ time_size = test_runner_dict[TIME_SIZE]
+ cl = test_runner_dict[CL_PERF]
+ correctness = test_runner_dict[BROWSER_CORRECTNESS]
+ output = summary_stats(browser_perf, time_size, cl, correctness)
+ output += specific_stats(browser_perf, time_size, cl)
+ return output
+
+def summary_stats(browser_perf, time_size, cl, correctness):
+ """Return the summarized stats report.
+
+ Args:
+ browser_perf: BrowserPerformanceTestRunner object. Holds browser perf stats.
+ time_size: CompileTimeSizeTestRunner object.
+ cl: CommandLinePerformanceTestRunner object.
+ correctness: BrowserCorrectnessTestRunner object.
+ """
+ output = "Summary of changes in the last 24 hours: \n\nBrowser " + \
+ "performance: (revision %d)\n" % \
+ browser_perf.revision_dict[create_graph.get_browsers()[0]][FROG]\
+ [browser_perf.values_list[0]][1]
+ for browser in create_graph.get_browsers():
+ geo_mean_list = browser_perf.values_dict[browser][FROG][FROG_MEAN]
+ # TODO(efortuna): deal with the fact that the latest of all browsers may not
+ # be available.
+ output += " %s%s\n" % ((browser + ':').ljust(25),
+ str(geo_mean_list[1] - geo_mean_list[0]).rjust(10))
+
+ output += "\nCompile Size and Time: (revision %d)\n" % \
+ time_size.revision_dict[COMMAND_LINE][FROG][time_size.values_list[0]][1]
+ for metric in time_size.values_list:
+ metric_list = time_size.values_dict[COMMAND_LINE][FROG][metric]
+ output += " %s%s\n" % ((metric + ':').ljust(25),
+ str(metric_list[1] - metric_list[0]).rjust(10))
+
+ output += "\nPercentage of language tests passing (revision %d)\n" % \
+ correctness.revision_dict['chrome'][FROG][correctness.values_list[0]][1]
+ for browser in create_graph.get_browsers():
+ num_correct = correctness.values_dict[browser][FROG][CORRECTNESS]
+ output += " %s%s%% more passing\n" % ((browser + ':').ljust(25),
+ str(num_correct[1] - num_correct[0]).rjust(10))
+
+ output += "\nCommandline performance: (revision %d)\n" % \
+ cl.revision_dict[COMMAND_LINE][FROG][cl.values_list[0]][1]
+ for benchmark in cl.values_list:
+ bench_list = cl.values_dict[COMMAND_LINE][FROG][benchmark]
+ output += " %s%s\n" % ((benchmark + ':').ljust(25),
+ str(bench_list[1] - bench_list[0]).rjust(10))
+ return output
+
+def specific_stats(browser_perf, time_size, cl):
+ """Return a string detailing all of the gory details and specifics on
+ benchmark numbers and individual benchmark changes.
+
+ Args:
+ browser_perf: BrowserPerformanceTestRunner object. Holds browser perf stats.
+ time_size: CompileTimeSizeTestRunner object.
+ cl: CommandLinePerformanceTestRunner object.
+ """
+ output = "\n\n---------------------------------------------\nThe latest " + \
+ "current raw numbers (and changes) for those " + \
+ "interested:\nBrowser performance:\n"
+ for v8_or_frog in V8_AND_FROG:
+ for browser in create_graph.get_browsers():
+ output += " %s %s:\n" % (browser, v8_or_frog)
+ for benchmark in create_graph.get_benchmarks():
+ bench_list = browser_perf.values_dict[browser][v8_or_frog][benchmark]
+ output += " %s %s%s\n" % ((benchmark + ':').ljust(25),
+ str(bench_list[1]).rjust(10), get_amount_changed(bench_list))
+
+ output += "\nCompile Size and Time for frog:\n"
+ for metric in time_size.values_list:
+ metric_list = time_size.values_dict[COMMAND_LINE][FROG][metric]
+ output += " %s %s%s\n" % ((metric + ':').ljust(25),
+ str(metric_list[1]).rjust(10), get_amount_changed(metric_list))
+
+ output += "\nCommandline performance:\n"
+ for v8_or_frog in V8_AND_FROG:
+ output += ' %s:\n' % v8_or_frog
+ for benchmark in cl.values_list:
+ bench_list = cl.values_dict[COMMAND_LINE][v8_or_frog][benchmark]
+ output += " %s %s%s\n" % ((benchmark + ':').ljust(25),
+ str(bench_list[1]).rjust(10), get_amount_changed(bench_list))
+
+ return output
+
+def get_amount_changed(values_tuple):
+ """Return a formatted string indicating the amount of change (positive or
+ negative) in the benchmark since the last run.
+
+ Args:
+ values_tuple: the tuple of values we are comparing the difference
+ between."""
+ difference = values_tuple[1] - values_tuple[0]
+ prefix = '+'
+ if difference < 0:
+ prefix = '-'
+ return ("(%s%s)" % (prefix, str(difference))).rjust(10)
+
+
+def main():
+ stats = calculate_stats()
+ print stats
+
+if __name__ == '__main__':
+ main()
« no previous file with comments | « no previous file | tools/testing/perf_testing/create_graph.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698