OLD | NEW |
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' |
(...skipping 13 matching lines...) Expand all Loading... |
24 self, main_page_url, resource_url, proto_buffer): | 24 self, main_page_url, resource_url, proto_buffer): |
25 self.main_page_url = main_page_url | 25 self.main_page_url = main_page_url |
26 self.resource_url = resource_url | 26 self.resource_url = resource_url |
27 self.proto = ResourceData() | 27 self.proto = ResourceData() |
28 self.proto.ParseFromString(proto_buffer) | 28 self.proto.ParseFromString(proto_buffer) |
29 self.confidence = float(self.proto.number_of_hits / ( | 29 self.confidence = float(self.proto.number_of_hits / ( |
30 self.proto.number_of_hits + self.proto.number_of_misses)) | 30 self.proto.number_of_hits + self.proto.number_of_misses)) |
31 self.score = self._Score() | 31 self.score = self._Score() |
32 | 32 |
33 def _Score(self): | 33 def _Score(self): |
34 """Mirrors ResourcePrefetchPredictorTables::ResourceRow::UpdateScore.""" | 34 """Mirrors ResourcePrefetchPredictorTables::ComputeResourceScore.""" |
35 multiplier = 1 | 35 priority_multiplier = 1 |
| 36 type_multiplier = 1 |
| 37 |
| 38 if self.proto.priority == ResourceData.REQUEST_PRIORITY_HIGHEST: |
| 39 priority_multiplier = 3 |
| 40 elif self.proto.priority == ResourceData.REQUEST_PRIORITY_MEDIUM: |
| 41 priority_multiplier = 2 |
| 42 |
36 if self.proto.resource_type in (ResourceData.RESOURCE_TYPE_STYLESHEET, | 43 if self.proto.resource_type in (ResourceData.RESOURCE_TYPE_STYLESHEET, |
37 ResourceData.RESOURCE_TYPE_SCRIPT, | 44 ResourceData.RESOURCE_TYPE_SCRIPT): |
38 ResourceData.RESOURCE_TYPE_FONT_RESOURCE): | 45 type_multiplier = 3 |
39 multiplier = 2 | 46 elif self.proto.resource_type == ResourceData.RESOURCE_TYPE_FONT_RESOURCE: |
40 return multiplier * 100 - self.proto.average_position | 47 type_multiplier = 2 |
| 48 |
| 49 return (100 * (priority_multiplier * 100 + type_multiplier * 10) |
| 50 - self.proto.average_position) |
41 | 51 |
42 @classmethod | 52 @classmethod |
43 def FromRow(cls, row): | 53 def FromRow(cls, row): |
44 """Builds an entry from a database row.""" | 54 """Builds an entry from a database row.""" |
45 return Entry(*row) | 55 return Entry(*row) |
46 | 56 |
47 def __str__(self): | 57 def __str__(self): |
48 return 'score: %s\nmain_page_url: %s\nconfidence: %f"\n%s' % ( | 58 return 'score: %s\nmain_page_url: %s\nconfidence: %f"\n%s' % ( |
49 self.score, self.main_page_url, self.confidence, self.proto) | 59 self.score, self.main_page_url, self.confidence, self.proto) |
50 | 60 |
(...skipping 25 matching lines...) Expand all Loading... |
76 parser = argparse.ArgumentParser() | 86 parser = argparse.ArgumentParser() |
77 parser.add_argument('-f', dest='database_filename', required=True, | 87 parser.add_argument('-f', dest='database_filename', required=True, |
78 help='Path to the database') | 88 help='Path to the database') |
79 parser.add_argument('-d', dest='domain', default=None, help='Domain') | 89 parser.add_argument('-d', dest='domain', default=None, help='Domain') |
80 args = parser.parse_args() | 90 args = parser.parse_args() |
81 DatabaseStats(args.database_filename, args.domain) | 91 DatabaseStats(args.database_filename, args.domain) |
82 | 92 |
83 | 93 |
84 if __name__ == '__main__': | 94 if __name__ == '__main__': |
85 main() | 95 main() |
OLD | NEW |