1*635a8641SAndroid Build Coastguard Worker // Copyright 2016 The Chromium Authors. All rights reserved.
2*635a8641SAndroid Build Coastguard Worker // Use of this source code is governed by a BSD-style license that can be
3*635a8641SAndroid Build Coastguard Worker // found in the LICENSE file.
4*635a8641SAndroid Build Coastguard Worker
5*635a8641SAndroid Build Coastguard Worker #include "base/metrics/histogram_functions.h"
6*635a8641SAndroid Build Coastguard Worker
7*635a8641SAndroid Build Coastguard Worker #include "base/metrics/histogram.h"
8*635a8641SAndroid Build Coastguard Worker #include "base/metrics/histogram_base.h"
9*635a8641SAndroid Build Coastguard Worker #include "base/metrics/sparse_histogram.h"
10*635a8641SAndroid Build Coastguard Worker #include "base/time/time.h"
11*635a8641SAndroid Build Coastguard Worker
12*635a8641SAndroid Build Coastguard Worker namespace base {
13*635a8641SAndroid Build Coastguard Worker
UmaHistogramBoolean(const std::string & name,bool sample)14*635a8641SAndroid Build Coastguard Worker void UmaHistogramBoolean(const std::string& name, bool sample) {
15*635a8641SAndroid Build Coastguard Worker HistogramBase* histogram = BooleanHistogram::FactoryGet(
16*635a8641SAndroid Build Coastguard Worker name, HistogramBase::kUmaTargetedHistogramFlag);
17*635a8641SAndroid Build Coastguard Worker histogram->Add(sample);
18*635a8641SAndroid Build Coastguard Worker }
19*635a8641SAndroid Build Coastguard Worker
UmaHistogramExactLinear(const std::string & name,int sample,int value_max)20*635a8641SAndroid Build Coastguard Worker void UmaHistogramExactLinear(const std::string& name,
21*635a8641SAndroid Build Coastguard Worker int sample,
22*635a8641SAndroid Build Coastguard Worker int value_max) {
23*635a8641SAndroid Build Coastguard Worker HistogramBase* histogram =
24*635a8641SAndroid Build Coastguard Worker LinearHistogram::FactoryGet(name, 1, value_max, value_max + 1,
25*635a8641SAndroid Build Coastguard Worker HistogramBase::kUmaTargetedHistogramFlag);
26*635a8641SAndroid Build Coastguard Worker histogram->Add(sample);
27*635a8641SAndroid Build Coastguard Worker }
28*635a8641SAndroid Build Coastguard Worker
UmaHistogramPercentage(const std::string & name,int percent)29*635a8641SAndroid Build Coastguard Worker void UmaHistogramPercentage(const std::string& name, int percent) {
30*635a8641SAndroid Build Coastguard Worker UmaHistogramExactLinear(name, percent, 100);
31*635a8641SAndroid Build Coastguard Worker }
32*635a8641SAndroid Build Coastguard Worker
UmaHistogramCustomCounts(const std::string & name,int sample,int min,int max,int buckets)33*635a8641SAndroid Build Coastguard Worker void UmaHistogramCustomCounts(const std::string& name,
34*635a8641SAndroid Build Coastguard Worker int sample,
35*635a8641SAndroid Build Coastguard Worker int min,
36*635a8641SAndroid Build Coastguard Worker int max,
37*635a8641SAndroid Build Coastguard Worker int buckets) {
38*635a8641SAndroid Build Coastguard Worker HistogramBase* histogram = Histogram::FactoryGet(
39*635a8641SAndroid Build Coastguard Worker name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag);
40*635a8641SAndroid Build Coastguard Worker histogram->Add(sample);
41*635a8641SAndroid Build Coastguard Worker }
42*635a8641SAndroid Build Coastguard Worker
UmaHistogramCounts100(const std::string & name,int sample)43*635a8641SAndroid Build Coastguard Worker void UmaHistogramCounts100(const std::string& name, int sample) {
44*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 100, 50);
45*635a8641SAndroid Build Coastguard Worker }
46*635a8641SAndroid Build Coastguard Worker
UmaHistogramCounts1000(const std::string & name,int sample)47*635a8641SAndroid Build Coastguard Worker void UmaHistogramCounts1000(const std::string& name, int sample) {
48*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 1000, 50);
49*635a8641SAndroid Build Coastguard Worker }
50*635a8641SAndroid Build Coastguard Worker
UmaHistogramCounts10000(const std::string & name,int sample)51*635a8641SAndroid Build Coastguard Worker void UmaHistogramCounts10000(const std::string& name, int sample) {
52*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 10000, 50);
53*635a8641SAndroid Build Coastguard Worker }
54*635a8641SAndroid Build Coastguard Worker
UmaHistogramCounts100000(const std::string & name,int sample)55*635a8641SAndroid Build Coastguard Worker void UmaHistogramCounts100000(const std::string& name, int sample) {
56*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 100000, 50);
57*635a8641SAndroid Build Coastguard Worker }
58*635a8641SAndroid Build Coastguard Worker
UmaHistogramCounts1M(const std::string & name,int sample)59*635a8641SAndroid Build Coastguard Worker void UmaHistogramCounts1M(const std::string& name, int sample) {
60*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 1000000, 50);
61*635a8641SAndroid Build Coastguard Worker }
62*635a8641SAndroid Build Coastguard Worker
UmaHistogramCounts10M(const std::string & name,int sample)63*635a8641SAndroid Build Coastguard Worker void UmaHistogramCounts10M(const std::string& name, int sample) {
64*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 10000000, 50);
65*635a8641SAndroid Build Coastguard Worker }
66*635a8641SAndroid Build Coastguard Worker
UmaHistogramCustomTimes(const std::string & name,TimeDelta sample,TimeDelta min,TimeDelta max,int buckets)67*635a8641SAndroid Build Coastguard Worker void UmaHistogramCustomTimes(const std::string& name,
68*635a8641SAndroid Build Coastguard Worker TimeDelta sample,
69*635a8641SAndroid Build Coastguard Worker TimeDelta min,
70*635a8641SAndroid Build Coastguard Worker TimeDelta max,
71*635a8641SAndroid Build Coastguard Worker int buckets) {
72*635a8641SAndroid Build Coastguard Worker HistogramBase* histogram = Histogram::FactoryTimeGet(
73*635a8641SAndroid Build Coastguard Worker name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag);
74*635a8641SAndroid Build Coastguard Worker histogram->AddTimeMillisecondsGranularity(sample);
75*635a8641SAndroid Build Coastguard Worker }
76*635a8641SAndroid Build Coastguard Worker
UmaHistogramTimes(const std::string & name,TimeDelta sample)77*635a8641SAndroid Build Coastguard Worker void UmaHistogramTimes(const std::string& name, TimeDelta sample) {
78*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomTimes(name, sample, TimeDelta::FromMilliseconds(1),
79*635a8641SAndroid Build Coastguard Worker TimeDelta::FromSeconds(10), 50);
80*635a8641SAndroid Build Coastguard Worker }
81*635a8641SAndroid Build Coastguard Worker
UmaHistogramMediumTimes(const std::string & name,TimeDelta sample)82*635a8641SAndroid Build Coastguard Worker void UmaHistogramMediumTimes(const std::string& name, TimeDelta sample) {
83*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomTimes(name, sample, TimeDelta::FromMilliseconds(1),
84*635a8641SAndroid Build Coastguard Worker TimeDelta::FromMinutes(3), 50);
85*635a8641SAndroid Build Coastguard Worker }
86*635a8641SAndroid Build Coastguard Worker
UmaHistogramLongTimes(const std::string & name,TimeDelta sample)87*635a8641SAndroid Build Coastguard Worker void UmaHistogramLongTimes(const std::string& name, TimeDelta sample) {
88*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomTimes(name, sample, TimeDelta::FromMilliseconds(1),
89*635a8641SAndroid Build Coastguard Worker TimeDelta::FromHours(1), 50);
90*635a8641SAndroid Build Coastguard Worker }
91*635a8641SAndroid Build Coastguard Worker
UmaHistogramMemoryKB(const std::string & name,int sample)92*635a8641SAndroid Build Coastguard Worker void UmaHistogramMemoryKB(const std::string& name, int sample) {
93*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1000, 500000, 50);
94*635a8641SAndroid Build Coastguard Worker }
95*635a8641SAndroid Build Coastguard Worker
UmaHistogramMemoryMB(const std::string & name,int sample)96*635a8641SAndroid Build Coastguard Worker void UmaHistogramMemoryMB(const std::string& name, int sample) {
97*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 1000, 50);
98*635a8641SAndroid Build Coastguard Worker }
99*635a8641SAndroid Build Coastguard Worker
UmaHistogramMemoryLargeMB(const std::string & name,int sample)100*635a8641SAndroid Build Coastguard Worker void UmaHistogramMemoryLargeMB(const std::string& name, int sample) {
101*635a8641SAndroid Build Coastguard Worker UmaHistogramCustomCounts(name, sample, 1, 64000, 100);
102*635a8641SAndroid Build Coastguard Worker }
103*635a8641SAndroid Build Coastguard Worker
UmaHistogramSparse(const std::string & name,int sample)104*635a8641SAndroid Build Coastguard Worker void UmaHistogramSparse(const std::string& name, int sample) {
105*635a8641SAndroid Build Coastguard Worker HistogramBase* histogram = SparseHistogram::FactoryGet(
106*635a8641SAndroid Build Coastguard Worker name, HistogramBase::kUmaTargetedHistogramFlag);
107*635a8641SAndroid Build Coastguard Worker histogram->Add(sample);
108*635a8641SAndroid Build Coastguard Worker }
109*635a8641SAndroid Build Coastguard Worker
110*635a8641SAndroid Build Coastguard Worker } // namespace base
111