15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#!/usr/bin/env python 246d4c2bc3267f3f028f39e7e311b0f89aba2e4fdTorne (Richard Coles)# Copyright 2012 The Chromium Authors. All rights reserved. 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)# found in the LICENSE file. 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import os 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import sys 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)import time 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir)) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from telemetry.core import browser_finder 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)from telemetry.core import browser_options 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)def Main(args): 17424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles) options = browser_options.BrowserFinderOptions() 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) parser = options.CreateParser('telemetry_perf_test.py') 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) options, args = parser.parse_args(args) 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) browser_to_create = browser_finder.FindBrowser(options) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) assert browser_to_create 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) with browser_to_create.Create() as b: 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab = b.tabs[0] 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) # Measure round-trip-time for evaluate 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) times = [] 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) for i in range(1000): 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) start = time.time() 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) tab.EvaluateJavaScript('%i * 2' % i) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) times.append(time.time() - start) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) N = float(len(times)) 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) avg = sum(times, 0.0) / N 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) squared_diffs = [(t - avg) * (t - avg) for t in times] 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) stdev = sum(squared_diffs, 0.0) / (N - 1) 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) times.sort() 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) percentile_75 = times[int(0.75 * N)] 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) print "%s: avg=%f; stdev=%f; min=%f; 75th percentile = %f" % ( 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) "Round trip time (seconds)", 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) avg, stdev, min(times), percentile_75) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return 0 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)if __name__ == '__main__': 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sys.exit(Main(sys.argv[1:])) 48