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

Unified Diff: tools/resource_prefetch_predictor/prefetch_predictor_tool.py

Issue 2263243002: predictors: Store protobufs in the database. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix tests. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor_tables_unittest.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/resource_prefetch_predictor/prefetch_predictor_tool.py
diff --git a/tools/resource_prefetch_predictor/prefetch_predictor_tool.py b/tools/resource_prefetch_predictor/prefetch_predictor_tool.py
index fad71305bbbe46a8bccdd3ffa286023bb0eb9ebb..fe7976414bc3f9e3e5b89e809ae59fcaae5b63ff 100755
--- a/tools/resource_prefetch_predictor/prefetch_predictor_tool.py
+++ b/tools/resource_prefetch_predictor/prefetch_predictor_tool.py
@@ -15,46 +15,29 @@ import argparse
import operator
import sqlite3
-
-class ResourceType(object):
- """Partially mirrors content::ResourceType."""
- STYLESHEET = 2
- SCRIPT = 3
- FONT_RESOURCE = 5
+from resource_prefetch_predictor_pb2 import ResourceData
class Entry(object):
"""Represents an entry in the predictor database."""
- HEADER = (
- 'score,main_page_url,resource_type,number_of_hits,number_of_misses,'
- 'consecutive_misses,average_position,confidence,has_validators,'
- 'always_revalidate,resource_url')
-
def __init__(
- self, main_page_url, resource_url, resource_type, number_of_hits,
- number_of_misses, consecutive_misses, average_position, priority,
- has_validators, always_revalidate):
+ self, main_page_url, resource_url, proto_buffer):
self.main_page_url = main_page_url
self.resource_url = resource_url
- self.resource_type = resource_type
- self.number_of_hits = int(number_of_hits)
- self.number_of_misses = int(number_of_misses)
- self.consecutive_misses = int(consecutive_misses)
- self.average_position = int(average_position)
- self.priority = int(priority)
- self.has_validators = bool(int(has_validators))
- self.always_revalidate = bool(int(always_revalidate))
- self.confidence = float(number_of_hits) / (
- number_of_hits + number_of_misses)
+ self.proto = ResourceData()
+ self.proto.ParseFromString(proto_buffer)
+ self.confidence = float(self.proto.number_of_hits / (
+ self.proto.number_of_hits + self.proto.number_of_misses))
self.score = self._Score()
def _Score(self):
"""Mirrors ResourcePrefetchPredictorTables::ResourceRow::UpdateScore."""
multiplier = 1
- if self.resource_type in (ResourceType.STYLESHEET, ResourceType.SCRIPT,
- ResourceType.FONT_RESOURCE):
+ if self.proto.resource_type in (ResourceData.RESOURCE_TYPE_STYLESHEET,
+ ResourceData.RESOURCE_TYPE_SCRIPT,
+ ResourceData.RESOURCE_TYPE_FONT_RESOURCE):
multiplier = 2
- return multiplier * 100 - self.average_position
+ return multiplier * 100 - self.proto.average_position
@classmethod
def FromRow(cls, row):
@@ -62,11 +45,8 @@ class Entry(object):
return Entry(*row)
def __str__(self):
- return '%f,%s,%d,%d,%d,%d,%d,%f,%d,%d,%d\t%s' % (
- self.score, self.main_page_url, self.resource_type,
- self.number_of_hits, self.number_of_misses, self.consecutive_misses,
- self.average_position, self.confidence, self.priority,
- self.has_validators, self.always_revalidate, self.resource_url)
+ return 'score: %s\nmain_page_url: %s\nconfidence: %f"\n%s' % (
+ self.score, self.main_page_url, self.confidence, self.proto)
def FilterAndSort(entries, domain):
@@ -77,20 +57,17 @@ def FilterAndSort(entries, domain):
result = filter(
lambda x: ((domain is None or x.main_page_url == domain)
and x.confidence > .7
- and x.number_of_hits >= 2), entries)
+ and x.proto.number_of_hits >= 2), entries)
return sorted(result, key=operator.attrgetter('score'), reverse=True)
def DatabaseStats(filename, domain):
connection = sqlite3.connect(filename)
c = connection.cursor()
- query = ('SELECT main_page_url, resource_url, resource_type, number_of_hits, '
- 'number_of_misses, consecutive_misses, average_position, priority, '
- 'has_validators, always_revalidate '
+ query = ('SELECT main_page_url, resource_url, proto '
'FROM resource_prefetch_predictor_host')
entries = [Entry.FromRow(row) for row in c.execute(query)]
prefetched = FilterAndSort(entries, domain)
- print Entry.HEADER
for x in prefetched:
print x
« no previous file with comments | « chrome/browser/predictors/resource_prefetch_predictor_tables_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698