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

Unified Diff: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp

Issue 1973073005: Log histograms for preloads and preload misses (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: kouhei@ review + updated histograms per yoav@ Created 4 years, 7 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 | « third_party/WebKit/Source/core/fetch/ResourceFetcher.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
diff --git a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
index f45d60fa6b9124ba576dee8f3c23b9018fa59476..9ee8a0da441045fd2e159b08060a8dbf12c8b6f8 100644
--- a/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
+++ b/third_party/WebKit/Source/core/fetch/ResourceFetcher.cpp
@@ -53,8 +53,6 @@
#include "wtf/text/CString.h"
#include "wtf/text/WTFString.h"
-#define PRELOAD_DEBUG 0
-
using blink::WebURLRequest;
namespace blink {
@@ -834,10 +832,6 @@ void ResourceFetcher::preloadStarted(Resource* resource)
if (!m_preloads)
m_preloads = new HeapListHashSet<Member<Resource>>;
m_preloads->add(resource);
-
-#if PRELOAD_DEBUG
- printf("PRELOADING %s\n", resource->url().string().latin1().data());
-#endif
}
bool ResourceFetcher::isPreloaded(const KURL& url) const
@@ -854,12 +848,11 @@ bool ResourceFetcher::isPreloaded(const KURL& url) const
void ResourceFetcher::clearPreloads(ClearPreloadsPolicy policy)
{
-#if PRELOAD_DEBUG
- printPreloadStats();
-#endif
if (!m_preloads)
return;
+ logPreloadStats();
+
for (auto resource : *m_preloads) {
resource->decreasePreloadCount();
if (resource->getPreloadResult() == Resource::PreloadNotReferenced && (policy == ClearAllPreloads || !resource->isLinkPreload()))
@@ -1063,55 +1056,114 @@ void ResourceFetcher::reloadLoFiImages()
}
}
-#if PRELOAD_DEBUG
-void ResourceFetcher::printPreloadStats()
+void ResourceFetcher::logPreloadStats()
{
if (!m_preloads)
return;
-
unsigned scripts = 0;
unsigned scriptMisses = 0;
unsigned stylesheets = 0;
unsigned stylesheetMisses = 0;
unsigned images = 0;
unsigned imageMisses = 0;
+ unsigned fonts = 0;
+ unsigned fontMisses = 0;
+ unsigned medias = 0;
+ unsigned mediaMisses = 0;
+ unsigned textTracks = 0;
+ unsigned textTrackMisses = 0;
+ unsigned imports = 0;
+ unsigned importMisses = 0;
+ unsigned raws = 0;
+ unsigned rawMisses = 0;
for (auto resource : *m_preloads) {
- if (resource->getPreloadResult() == Resource::PreloadNotReferenced)
- printf("!! UNREFERENCED PRELOAD %s\n", resource->url().string().latin1().data());
- else if (resource->getPreloadResult() == Resource::PreloadReferencedWhileComplete)
- printf("HIT COMPLETE PRELOAD %s\n", resource->url().string().latin1().data());
- else if (resource->getPreloadResult() == Resource::PreloadReferencedWhileLoading)
- printf("HIT LOADING PRELOAD %s\n", resource->url().string().latin1().data());
-
- if (resource->getType() == Resource::Script) {
+ int missCount = resource->getPreloadResult() == Resource::PreloadNotReferenced ? 1 : 0;
+ switch (resource->getType()) {
+ case Resource::Image:
+ images++;
+ imageMisses += missCount;
+ break;
+ case Resource::Script:
scripts++;
- if (resource->getPreloadResult() < Resource::PreloadReferencedWhileLoading)
- scriptMisses++;
- } else if (resource->getType() == Resource::CSSStyleSheet) {
+ scriptMisses += missCount;
+ break;
+ case Resource::CSSStyleSheet:
stylesheets++;
- if (resource->getPreloadResult() < Resource::PreloadReferencedWhileLoading)
- stylesheetMisses++;
- } else {
- images++;
- if (resource->getPreloadResult() < Resource::PreloadReferencedWhileLoading)
- imageMisses++;
+ stylesheetMisses += missCount;
+ break;
+ case Resource::Font:
+ fonts++;
+ fontMisses += missCount;
+ break;
+ case Resource::Media:
+ medias++;
+ mediaMisses += missCount;
+ break;
+ case Resource::TextTrack:
+ textTracks++;
+ textTrackMisses += missCount;
+ break;
+ case Resource::ImportResource:
+ imports++;
+ importMisses += missCount;
+ break;
+ case Resource::Raw:
+ raws++;
+ rawMisses += missCount;
+ break;
+ default:
+ ASSERT_NOT_REACHED();
}
-
- if (resource->errorOccurred())
- memoryCache()->remove(resource.get());
-
- resource->decreasePreloadCount();
}
- m_preloads.clear();
-
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, imagePreloads, ("PreloadScanner.Counts.Image", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, imagePreloadMisses, ("PreloadScanner.Counts.Miss.Image", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, scriptPreloads, ("PreloadScanner.Counts.Script", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, scriptPreloadMisses, ("PreloadScanner.Counts.Miss.Script", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, stylesheetPreloads, ("PreloadScanner.Counts.CSSStyleSheet", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, stylesheetPreloadMisses, ("PreloadScanner.Counts.Miss.CSSStyleSheet", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, fontPreloads, ("PreloadScanner.Counts.Font", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, fontPreloadMisses, ("PreloadScanner.Counts.Miss.Font", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, mediaPreloads, ("PreloadScanner.Counts.Media", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, mediaPreloadMisses, ("PreloadScanner.Counts.Miss.Media", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, textTrackPreloads, ("PreloadScanner.Counts.TextTrack", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, textTrackPreloadMisses, ("PreloadScanner.Counts.Miss.TextTrack", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, importPreloads, ("PreloadScanner.Counts.Import", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, importPreloadMisses, ("PreloadScanner.Counts.Miss.Import", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, rawPreloads, ("PreloadScanner.Counts.Raw", 0, 100, 5));
+ DEFINE_STATIC_LOCAL(CustomCountHistogram, rawPreloadMisses, ("PreloadScanner.Counts.Miss.Raw", 0, 100, 5));
+ if (images)
+ imagePreloads.count(images);
+ if (imageMisses)
+ imagePreloadMisses.count(imageMisses);
if (scripts)
- printf("SCRIPTS: %d (%d hits, hit rate %d%%)\n", scripts, scripts - scriptMisses, (scripts - scriptMisses) * 100 / scripts);
+ scriptPreloads.count(scripts);
+ if (scriptMisses)
+ scriptPreloadMisses.count(scriptMisses);
if (stylesheets)
- printf("STYLESHEETS: %d (%d hits, hit rate %d%%)\n", stylesheets, stylesheets - stylesheetMisses, (stylesheets - stylesheetMisses) * 100 / stylesheets);
- if (images)
- printf("IMAGES: %d (%d hits, hit rate %d%%)\n", images, images - imageMisses, (images - imageMisses) * 100 / images);
+ stylesheetPreloads.count(stylesheets);
+ if (stylesheetMisses)
+ stylesheetPreloadMisses.count(stylesheetMisses);
+ if (fonts)
+ fontPreloads.count(fonts);
+ if (fontMisses)
+ fontPreloadMisses.count(fontMisses);
+ if (medias)
+ mediaPreloads.count(medias);
+ if (mediaMisses)
+ mediaPreloadMisses.count(mediaMisses);
+ if (textTracks)
+ textTrackPreloads.count(textTracks);
+ if (textTrackMisses)
+ textTrackPreloadMisses.count(textTrackMisses);
+ if (imports)
+ importPreloads.count(imports);
+ if (importMisses)
+ importPreloadMisses.count(importMisses);
+ if (raws)
+ rawPreloads.count(raws);
+ if (rawMisses)
+ rawPreloadMisses.count(rawMisses);
}
-#endif
const ResourceLoaderOptions& ResourceFetcher::defaultResourceOptions()
{
« no previous file with comments | « third_party/WebKit/Source/core/fetch/ResourceFetcher.h ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698