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

Unified Diff: chrome/browser/prerender/prerender_histograms.cc

Issue 2321083002: [NoStatePrefetch] Add performance histograms. (Closed)
Patch Set: Review comments Created 4 years, 3 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/prerender/prerender_histograms.cc
diff --git a/chrome/browser/prerender/prerender_histograms.cc b/chrome/browser/prerender/prerender_histograms.cc
index 28c43c0968095a78f4c072d41a676220737994bf..4e97663049a8d3e75b14b55e98a28ec60af7f2cc 100644
--- a/chrome/browser/prerender/prerender_histograms.cc
+++ b/chrome/browser/prerender/prerender_histograms.cc
@@ -13,6 +13,7 @@
#include "base/strings/stringprintf.h"
#include "chrome/browser/prerender/prerender_manager.h"
#include "chrome/browser/prerender/prerender_util.h"
+#include "net/http/http_cache.h"
namespace prerender {
@@ -37,7 +38,7 @@ int GetResourceType(bool is_main_resource, bool is_redirect, bool is_no_store) {
// Similar to UMA_HISTOGRAM_ENUMERATION but allows a dynamic histogram name.
// Records a sample such as 0 <= sample < bucket_count, in a histogram with
// |bucket_count| buckets of width 1 each.
-void RecordHistogramEnum(std::string histogram_name,
+void RecordHistogramEnum(const std::string& histogram_name,
base::HistogramBase::Sample sample,
base::HistogramBase::Sample bucket_count) {
DCHECK_LT(sample, bucket_count);
@@ -47,6 +48,18 @@ void RecordHistogramEnum(std::string histogram_name,
histogram_pointer->Add(sample);
}
+// Similar to UMA_HISTOGRAM_CUSTOM_TIMES but allows a dynamic histogram name.
+void RecordHistogramTime(const std::string& histogram_name,
+ base::TimeDelta time_min,
+ base::TimeDelta time_max,
+ base::TimeDelta sample,
+ base::HistogramBase::Sample bucket_count) {
+ base::HistogramBase* histogram_pointer = base::Histogram::FactoryTimeGet(
+ histogram_name, time_min, time_max, bucket_count,
+ base::HistogramBase::kUmaTargetedHistogramFlag);
+ histogram_pointer->AddTime(sample);
+}
+
// Time window for which we will record windowed PLTs from the last observed
// link rel=prefetch tag. This is not intended to be the same as the prerender
// ttl, it's just intended to be a window during which a prerender has likely
@@ -439,10 +452,51 @@ void PrerenderHistograms::RecordPrefetchRedirectCount(
RecordHistogramEnum(histogram_name, redirect_count, kMaxRedirectCount);
}
+void PrerenderHistograms::RecordFirstContentfulPaint(
+ Origin origin,
+ bool is_no_store,
+ base::TimeDelta time,
+ base::TimeDelta prefetch_age) {
+ DCHECK(thread_checker_.CalledOnValidThread());
+
+ if (!prefetch_age.is_zero()) {
+ DCHECK_NE(origin, ORIGIN_NONE);
+ RecordHistogramTime(GetHistogramName(origin, IsOriginWash(),
+ "Prerender.NoStatePrefetchAge"),
+ base::TimeDelta::FromMilliseconds(10),
+ base::TimeDelta::FromMinutes(30), prefetch_age, 50);
+ }
+
+ RecordHistogramTime(GetFirstContentfulPaintHistogramName(
+ origin, IsOriginWash(), is_no_store, prefetch_age),
+ base::TimeDelta::FromMilliseconds(10),
+ base::TimeDelta::FromMinutes(2), time, 50);
+}
+
bool PrerenderHistograms::IsOriginWash() const {
if (!WithinWindow())
return false;
return origin_wash_;
}
+// static
+std::string PrerenderHistograms::GetFirstContentfulPaintHistogramName(
+ Origin origin,
+ bool is_wash,
+ bool is_no_store,
+ base::TimeDelta prefetch_age) {
+ std::string histogram_base_name;
+ if (prefetch_age.is_zero()) {
+ histogram_base_name = "NoStatePrefetchTTFCP.Reference";
+ } else {
+ histogram_base_name = prefetch_age < base::TimeDelta::FromMinutes(
+ net::HttpCache::kPrefetchReuseMins)
+ ? "NoStatePrefetchTTFCP.Warm"
+ : "NoStatePrefetchTTFCP.Cold";
+ }
+
+ histogram_base_name += is_no_store ? ".NoStore" : ".Cacheable";
+ return GetHistogramName(origin, is_wash, histogram_base_name);
+}
+
} // namespace prerender
« no previous file with comments | « chrome/browser/prerender/prerender_histograms.h ('k') | chrome/browser/prerender/prerender_link_manager_factory.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698