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

Unified Diff: functional/perf.py

Issue 8824002: Update _OutputPerfGraphValue to handle Chrome. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/chrome/test/
Patch Set: '' Created 9 years 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 | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: functional/perf.py
===================================================================
--- functional/perf.py (revision 113084)
+++ functional/perf.py (working copy)
@@ -67,6 +67,8 @@
self._max_timeout_count = int(os.environ['MAX_TIMEOUT_COUNT'])
self._timeout_count = 0
pyauto.PyUITest.setUp(self)
+ print ('CHROME VERSION: ' +
+ self.GetBrowserInfo()['properties']['ChromeVersion'])
dennis_jeffrey 2011/12/07 22:25:29 This is not actually needed right now, until we su
chrisphan 2011/12/07 22:34:13 Done.
def _AppendTab(self, url):
"""Appends a tab and increments a counter if the automation call times out.
@@ -113,32 +115,47 @@
std_dev = math.sqrt(sum(temp_vals) / (len(temp_vals) - 1))
return avg, std_dev
- def _OutputPerfGraphValue(self, description, value):
+ def _OutputPerfGraphValue(self, description, value, units,
+ graph_name='Default-Graph'):
"""Outputs a performance value to have it graphed on the performance bots.
- Only used for ChromeOS. The performance bots have a 30-character limit on
- the length of the description for a performance value. Any characters
- beyond that are truncated before results are stored in the autotest
+ The output format differs, depending on whether the current platform is
+ Chrome desktop or ChromeOS.
+
+
dennis_jeffrey 2011/12/07 22:25:29 remove one of these blank lines
chrisphan 2011/12/07 22:34:13 Done.
+ For ChromeOS, the performance bots have a 30-character limit on the length
+ of the key associated with a performance value. A key on ChromeOS is
+ considered to be of the form "units_description" (for example,
+ "milliseconds_NewTabPage"), and is created from the |units| and
+ |description| passed as input to this function. Any characters beyond the
+ length 30 limit are truncated before results are stored in the autotest
database.
Args:
- description: A string description of the performance value. The string
- should be of the form "units_identifier" (for example,
- "milliseconds_NewTabPage"). This description will be
- truncated to 30 characters when stored in the autotest
- database.
+ description: A string description of the performance value. Should not
+ include spaces.
value: A numeric value representing a single performance measurement.
+ units: A string representing the units of the performance value. Should
+ not include spaces.
+ graph_name: A string name for the graph associated with this performance
+ value. Only used on Chrome desktop.
+
"""
if self.IsChromeOS():
- if len(description) > 30:
+ perf_key = '%s_%s' % (units, description)
+ if len(perf_key) > 30:
logging.warning('The description "%s" will be truncated to "%s" '
'(length 30) when added to the autotest database.',
- description, description[:30])
- print '\n%s(\'%s\', %.2f)%s' % (self._PERF_OUTPUT_MARKER_PRE, description,
- value, self._PERF_OUTPUT_MARKER_POST)
+ perf_key, perf_key[:30])
+ print '\n%s(\'%s\', %.2f)%s' % (self._PERF_OUTPUT_MARKER_PRE,
+ perf_key, value,
+ self._PERF_OUTPUT_MARKER_POST)
sys.stdout.flush()
+ else:
+ pyauto_utils.PrintPerfResult(graph_name, description, value, units)
- def _PrintSummaryResults(self, description, values, units):
+ def _PrintSummaryResults(self, description, values, units,
+ graph_name='Default-Graph'):
dennis_jeffrey 2011/12/07 22:25:29 indent this line by 1 fewer space
chrisphan 2011/12/07 22:34:13 Done.
"""Logs summary measurement information.
This function computes and outputs the average and standard deviation of
@@ -160,7 +177,7 @@
logging.info(' --------------------------')
logging.info(' Average: %.2f %s', avg, units)
logging.info(' Std dev: %.2f %s', std_dev, units)
- self._OutputPerfGraphValue('%s_%s' % (units, description), avg)
+ self._OutputPerfGraphValue(description, avg, units, graph_name)
dennis_jeffrey 2011/12/07 22:25:29 pass the last argument as a named argument: graph_
chrisphan 2011/12/07 22:34:13 Done.
else:
logging.info('No results to report.')
@@ -194,7 +211,8 @@
for _ in range(num_tabs):
self.GetBrowserWindow(0).GetTab(1).Close(True)
- self._PrintSummaryResults(description, timings, 'milliseconds')
+ self._PrintSummaryResults(description, timings, 'milliseconds',
+ description)
def _LoginToGoogleAccount(self):
"""Logs in to a testing Google account."""
@@ -327,9 +345,11 @@
for key, val in timings.items():
print
if key == 'final_score':
- self._PrintSummaryResults('V8Benchmark', val, 'score')
+ self._PrintSummaryResults('V8Benchmark', val, 'score',
+ 'V8Benchmark-final')
else:
- self._PrintSummaryResults('V8Benchmark-%s' % key, val, 'score')
+ self._PrintSummaryResults('V8Benchmark-%s' % key, val, 'score',
+ 'V8Benchmark-individual')
def testSunSpider(self):
"""Runs the SunSpider javascript benchmark suite."""
@@ -357,7 +377,8 @@
results = self.ExecuteJavascript(js_get_results, tab_index=1) + '<br>'
total = re.search('Total:\s*([\d.]+)ms', results).group(1)
logging.info('Total: %.2f ms' % float(total))
- self._OutputPerfGraphValue('ms_SunSpider-total', float(total))
+ self._OutputPerfGraphValue('SunSpider', float(total), 'ms',
dennis_jeffrey 2011/12/07 22:25:29 please change the first argument to "SunSpider-tot
chrisphan 2011/12/07 22:34:13 Done.
+ graph_name='SunSpider-total')
for match_category in re.finditer('\s\s(\w+):\s*([\d.]+)ms.+?<br><br>',
results):
@@ -365,8 +386,10 @@
category_result = match_category.group(2)
logging.info('Benchmark "%s": %.2f ms', category_name,
float(category_result))
- self._OutputPerfGraphValue('ms_SunSpider-%s' % category_name,
- float(category_result))
+ self._OutputPerfGraphValue('SunSpider-' + category_name,
+ float(category_result), 'ms',
+ graph_name='SunSpider-individual')
+
for match_result in re.finditer('<br>\s\s\s\s([\w-]+):\s*([\d.]+)ms',
match_category.group(0)):
result_name = match_result.group(1)
@@ -374,8 +397,9 @@
logging.info(' Result "%s-%s": %.2f ms', category_name, result_name,
float(result_value))
self._OutputPerfGraphValue(
- 'ms_SunSpider-%s-%s' % (category_name, result_name),
- float(result_value))
+ 'SunSpider-%s-%s' % (category_name, result_name),
+ float(result_value), 'ms',
+ graph_name='SunSpider-individual')
def testDromaeoSuite(self):
"""Measures results from Dromaeo benchmark suite."""
@@ -432,14 +456,17 @@
results = eval(self.ExecuteJavascript(js_get_results, tab_index=1))
total_result = results['total_result']
logging.info('Total result: ' + total_result)
- self._OutputPerfGraphValue('runsPerSec_Dromaeo-total', float(total_result))
-
+ self._OutputPerfGraphValue(
+ 'Dromaeo-total',
+ float(total_result), 'runsPerSec',
+ graph_name='Dromaeo-total')
+
for group_name, group in results['all_results'].iteritems():
logging.info('Benchmark "%s": %s', group_name, group['result'])
self._OutputPerfGraphValue(
- 'runsPerSec_Dromaeo-%s' % group_name.replace(' ', ''),
- float(group['result']))
-
+ 'Dromaeo-' + group_name.replace(' ', ''),
+ float(group['result']), 'runsPerSec',
+ graph_name='Dromaeo-individual')
for benchmark_name, benchmark_score in group['sub_groups'].iteritems():
logging.info(' Result "%s": %s', benchmark_name, benchmark_score)
@@ -589,8 +616,10 @@
extrapolation_value = fraction_non_idle_time * \
(total_video_frames + total_dropped_frames) / total_video_frames
logging.info('Netflix CPU extrapolation: %.2f' % extrapolation_value)
- self._OutputPerfGraphValue('extrapolation_NetflixCPUExtrapolation',
- extrapolation_value)
+ self._OutputPerfGraphValue(
+ 'NetflixCPUExtrapolation',
+ extrapolation_value, 'extrapolation',
+ graph_name='NetflixCPUExtrapolation')
class YoutubePerfTest(BasePerfTest, YoutubeTestHelper):
@@ -683,8 +712,10 @@
extrapolation_value = (fraction_non_idle_time *
(total_frames / total_shown_frames))
logging.info('Youtube CPU extrapolation: %.2f' % extrapolation_value)
- self._OutputPerfGraphValue('extrapolation_YoutubeCPUExtrapolation',
- extrapolation_value)
+ self._OutputPerfGraphValue(
+ 'YoutubeCPUExtrapolation',
+ extrapolation_value, 'extrapolation',
+ graph_name='YoutubeCPUExtrapolation')
class WebGLTest(BasePerfTest):
@@ -1131,7 +1162,10 @@
msg='Timed out when waiting for test result.')
result = float(self.ExecuteJavascript(js, tab_index=1))
logging.info('Result for %s: %.2f FPS (average)', description, result)
- self._OutputPerfGraphValue('%s_%s' % ('FPS', description), result)
+ self._OutputPerfGraphValue(
+ description,
+ result, 'FPS',
+ graph_name=description)
def testFlashGaming(self):
"""Runs a simple flash gaming benchmark test."""
@@ -1179,9 +1213,13 @@
logging.info(' %.2f MFLOPS', mflops)
logging.info(' %.2f MB', mem)
self._OutputPerfGraphValue(
- '%s_ScimarkGui-%s-MFLOPS' % ('MFLOPS', benchmark), mflops)
+ 'ScimarkGui-%s-MFLOPS' % benchmark,
+ mflops, 'MFLOPS',
+ graph_name='ScimarkGui')
self._OutputPerfGraphValue(
- '%s_ScimarkGui-%s-Mem' % ('MB', benchmark), mem)
+ 'ScimarkGui-%s-Mem' % benchmark,
+ mem, 'MB',
+ graph_name='ScimarkGui')
class LiveGamePerfTest(BasePerfTest):
@@ -1230,13 +1268,18 @@
logging.info('Fraction of CPU time spent non-idle: %.2f' %
fraction_non_idle_time)
- self._OutputPerfGraphValue('Fraction_%sCpuBusy' % description,
- fraction_non_idle_time)
+ self._OutputPerfGraphValue(
+ description + 'CpuBusy',
+ fraction_non_idle_time, 'Fraction',
+ graph_name='CpuBusy')
snapshotter = perf_snapshot.PerformanceSnapshotter()
snapshot = snapshotter.HeapSnapshot()[0]
v8_heap_size = snapshot['total_heap_size'] / (1024.0 * 1024.0)
logging.info('Total v8 heap size: %.2f MB' % v8_heap_size)
- self._OutputPerfGraphValue('MB_%sV8HeapSize' % description, v8_heap_size)
+ self._OutputPerfGraphValue(
+ description + 'V8HeapSize',
+ v8_heap_size, 'MB',
+ graph_name='V8HeapSize')
def testAngryBirds(self):
"""Measures performance for Angry Birds."""
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698