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

Unified Diff: chrome/browser/predictors/resource_prefetch_predictor_tables.cc

Issue 2831233004: predictors: Add resource type to manifest. (Closed)
Patch Set: Use the same resource type ordering. Created 3 years, 8 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
Index: chrome/browser/predictors/resource_prefetch_predictor_tables.cc
diff --git a/chrome/browser/predictors/resource_prefetch_predictor_tables.cc b/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
index 710325c29397cc661d42149b1af184cdff8f8472..1dc5d74409ddecb9afe2433cd509c89df66aaddb 100644
--- a/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
+++ b/chrome/browser/predictors/resource_prefetch_predictor_tables.cc
@@ -69,6 +69,41 @@ bool StepAndInitializeProtoData(sql::Statement* statement,
return true;
}
+predictors::ResourceData::ResourceType PrecacheResourceTypeToResourceType(
+ precache::PrecacheResource::Type resource_type) {
+ using precache::PrecacheResource;
+ using predictors::ResourceData;
+ switch (resource_type) {
+ case PrecacheResource::RESOURCE_TYPE_IMAGE:
+ return ResourceData::RESOURCE_TYPE_IMAGE;
+ case PrecacheResource::RESOURCE_TYPE_FONT:
+ return ResourceData::RESOURCE_TYPE_FONT_RESOURCE;
+ case PrecacheResource::RESOURCE_TYPE_STYLESHEET:
+ return ResourceData::RESOURCE_TYPE_STYLESHEET;
+ case PrecacheResource::RESOURCE_TYPE_SCRIPT:
+ return ResourceData::RESOURCE_TYPE_SCRIPT;
+ case PrecacheResource::RESOURCE_TYPE_OTHER:
+ case PrecacheResource::RESOURCE_TYPE_UNKNOWN:
+ default:
+ return ResourceData::RESOURCE_TYPE_SUB_RESOURCE;
+ }
+}
+
+int GetResourceTypeMultiplier(
+ predictors::ResourceData::ResourceType resource_type) {
+ switch (resource_type) {
+ case predictors::ResourceData::RESOURCE_TYPE_STYLESHEET:
+ return 4;
+ case predictors::ResourceData::RESOURCE_TYPE_SCRIPT:
+ return 3;
+ case predictors::ResourceData::RESOURCE_TYPE_FONT_RESOURCE:
alexilin 2017/04/25 17:37:05 Actually, I'm also thinking about prioritizing fon
Benoit L 2017/04/27 08:54:15 Well, this is because we start fetching font at th
alexilin 2017/04/27 15:32:23 Agree. Thanks for the explanation!
+ return 2;
+ case predictors::ResourceData::RESOURCE_TYPE_IMAGE:
+ default:
+ return 1;
+ }
+}
+
} // namespace
namespace predictors {
@@ -310,14 +345,9 @@ void ResourcePrefetchPredictorTables::GetAllResourceDataHelper(
PrefetchData data;
std::string key;
while (StepAndInitializeProtoData(&resource_reader, &key, &data)) {
- data_map->insert(std::make_pair(key, data));
+ data_map->insert({key, data});
DCHECK_EQ(data.primary_key(), key);
}
-
- // Sort each of the resource vectors by score.
- for (auto& kv : *data_map) {
- SortResources(&(kv.second));
- }
}
void ResourcePrefetchPredictorTables::GetAllRedirectDataHelper(
@@ -331,7 +361,7 @@ void ResourcePrefetchPredictorTables::GetAllRedirectDataHelper(
RedirectData data;
std::string key;
while (StepAndInitializeProtoData(&redirect_reader, &key, &data)) {
- data_map->insert(std::make_pair(key, data));
+ data_map->insert({key, data});
DCHECK_EQ(data.primary_key(), key);
}
}
@@ -345,7 +375,7 @@ void ResourcePrefetchPredictorTables::GetAllManifestDataHelper(
precache::PrecacheManifest data;
std::string key;
while (StepAndInitializeProtoData(&manifest_reader, &key, &data)) {
- manifest_map->insert(std::make_pair(key, data));
+ manifest_map->insert({key, data});
}
}
@@ -427,19 +457,7 @@ float ResourcePrefetchPredictorTables::ComputeResourceScore(
break;
}
- int type_multiplier;
- switch (data.resource_type()) {
- case ResourceData::RESOURCE_TYPE_STYLESHEET:
- case ResourceData::RESOURCE_TYPE_SCRIPT:
- type_multiplier = 3;
- break;
- case ResourceData::RESOURCE_TYPE_FONT_RESOURCE:
- type_multiplier = 2;
- break;
- case ResourceData::RESOURCE_TYPE_IMAGE:
- default:
- type_multiplier = 1;
- }
+ int type_multiplier = GetResourceTypeMultiplier(data.resource_type());
constexpr int kMaxResourcesPerType = 100;
return kMaxResourcesPerType *
@@ -447,6 +465,16 @@ float ResourcePrefetchPredictorTables::ComputeResourceScore(
data.average_position();
}
+// static
+float ResourcePrefetchPredictorTables::ComputePrecacheResourceScore(
+ const precache::PrecacheResource& resource) {
+ int type_multiplier = GetResourceTypeMultiplier(
+ PrecacheResourceTypeToResourceType(resource.type()));
+ // This means a strict ordering, since the weight_ratio is in [0,1).
+ return type_multiplier * 10 + resource.weight_ratio();
+}
+
+// static
float ResourcePrefetchPredictorTables::ComputeOriginScore(
const OriginStat& origin) {
// The ranking is done by considering, in this order:

Powered by Google App Engine
This is Rietveld 408576698