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

Side by Side Diff: tools/resource_prefetch_predictor/prefetch_predictor_tool.py

Issue 2184323003: predictors: Support fonts in resource_prefetch_predictors. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 4 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 unified diff | Download patch
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright 2016 The Chromium Authors. All rights reserved. 2 # Copyright 2016 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """Inspection of the prefetch predictor database. 6 """Inspection of the prefetch predictor database.
7 7
8 On Android, the database can be extracted using: 8 On Android, the database can be extracted using:
9 adb pull \ 9 adb pull \
10 '/data/user/0/$package_name/app_chrome/Default/Network Action Predictor' 10 '/data/user/0/$package_name/app_chrome/Default/Network Action Predictor'
11 predictor_db 11 predictor_db
12 """ 12 """
13 13
14 import argparse 14 import argparse
15 import operator 15 import operator
16 import sqlite3 16 import sqlite3
17 17
18 18
19 class ResourceType(object): 19 class ResourceType(object):
20 STYLESHEET = 2 20 STYLESHEET = 2
21 SCRIPT = 3 21 SCRIPT = 3
22 FONT_RESOURCE = 5
pasko 2016/07/28 14:04:04 Let's drop a comment saying that this should mirro
Benoit L 2016/07/28 16:11:54 Done.
22 23
23 24
24 class Entry(object): 25 class Entry(object):
25 """Represents an entry in the predictor database.""" 26 """Represents an entry in the predictor database."""
26 HEADER = ( 27 HEADER = (
27 'score,main_page_url,resource_type,number_of_hits,number_of_misses,' 28 'score,main_page_url,resource_type,number_of_hits,number_of_misses,'
28 'consecutive_misses,average_position,confidence,resource_url') 29 'consecutive_misses,average_position,confidence,resource_url')
29 30
30 def __init__( 31 def __init__(
31 self, main_page_url, resource_url, resource_type, number_of_hits, 32 self, main_page_url, resource_url, resource_type, number_of_hits,
32 number_of_misses, consecutive_misses, average_position): 33 number_of_misses, consecutive_misses, average_position):
33 self.main_page_url = main_page_url 34 self.main_page_url = main_page_url
34 self.resource_url = resource_url 35 self.resource_url = resource_url
35 self.resource_type = resource_type 36 self.resource_type = resource_type
36 self.number_of_hits = int(number_of_hits) 37 self.number_of_hits = int(number_of_hits)
37 self.number_of_misses = int(number_of_misses) 38 self.number_of_misses = int(number_of_misses)
38 self.consecutive_misses = int(consecutive_misses) 39 self.consecutive_misses = int(consecutive_misses)
39 self.average_position = int(average_position) 40 self.average_position = int(average_position)
40 self.confidence = float(number_of_hits) / ( 41 self.confidence = float(number_of_hits) / (
41 number_of_hits + number_of_misses) 42 number_of_hits + number_of_misses)
42 self.score = self._Score() 43 self.score = self._Score()
43 44
44 def _Score(self): 45 def _Score(self):
45 """Mirrors ResourcePrefetchPredictorTables::ResourceRow::UpdateScore.""" 46 """Mirrors ResourcePrefetchPredictorTables::ResourceRow::UpdateScore."""
46 multiplier = 1 47 multiplier = 1
47 if self.resource_type in (ResourceType.STYLESHEET, ResourceType.SCRIPT): 48 if self.resource_type in (ResourceType.STYLESHEET, ResourceType.SCRIPT,
49 ResourceType.FONT_RESOURCE):
48 multiplier = 2 50 multiplier = 2
49 return multiplier * 100 - self.average_position 51 return multiplier * 100 - self.average_position
50 52
51 @classmethod 53 @classmethod
52 def FromRow(cls, row): 54 def FromRow(cls, row):
53 """Builds an entry from a database row.""" 55 """Builds an entry from a database row."""
54 return Entry(*row) 56 return Entry(*row)
55 57
56 def __str__(self): 58 def __str__(self):
57 return '%f,%s,%d,%d,%d,%d,%d,%f\t%s' % ( 59 return '%f,%s,%d,%d,%d,%d,%d,%f\t%s' % (
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 parser = argparse.ArgumentParser() 91 parser = argparse.ArgumentParser()
90 parser.add_argument('-f', dest='database_filename', required=True, 92 parser.add_argument('-f', dest='database_filename', required=True,
91 help='Path to the database') 93 help='Path to the database')
92 parser.add_argument('-d', dest='domain', default=None, help='Domain') 94 parser.add_argument('-d', dest='domain', default=None, help='Domain')
93 args = parser.parse_args() 95 args = parser.parse_args()
94 DatabaseStats(args.database_filename, args.domain) 96 DatabaseStats(args.database_filename, args.domain)
95 97
96 98
97 if __name__ == '__main__': 99 if __name__ == '__main__':
98 main() 100 main()
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698