| // Copyright 2016 The Chromium Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #include "base/metrics/histogram_functions.h" | |
| #include "base/metrics/histogram.h" | |
| #include "base/metrics/histogram_base.h" | |
| #include "base/metrics/sparse_histogram.h" | |
| #include "base/time/time.h" | |
| namespace base { | |
| void UmaHistogramBoolean(const std::string& name, bool sample) { | |
| HistogramBase* histogram = BooleanHistogram::FactoryGet( | |
| name, HistogramBase::kUmaTargetedHistogramFlag); | |
| histogram->Add(sample); | |
| } | |
| void UmaHistogramExactLinear(const std::string& name, | |
| int sample, | |
| int value_max) { | |
| HistogramBase* histogram = | |
| LinearHistogram::FactoryGet(name, 1, value_max, value_max + 1, | |
| HistogramBase::kUmaTargetedHistogramFlag); | |
| histogram->Add(sample); | |
| } | |
| void UmaHistogramPercentage(const std::string& name, int percent) { | |
| UmaHistogramExactLinear(name, percent, 100); | |
| } | |
| void UmaHistogramCustomCounts(const std::string& name, | |
| int sample, | |
| int min, | |
| int max, | |
| int buckets) { | |
| HistogramBase* histogram = Histogram::FactoryGet( | |
| name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag); | |
| histogram->Add(sample); | |
| } | |
| void UmaHistogramCounts100(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 100, 50); | |
| } | |
| void UmaHistogramCounts1000(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 1000, 50); | |
| } | |
| void UmaHistogramCounts10000(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 10000, 50); | |
| } | |
| void UmaHistogramCounts100000(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 100000, 50); | |
| } | |
| void UmaHistogramCounts1M(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 1000000, 50); | |
| } | |
| void UmaHistogramCounts10M(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 10000000, 50); | |
| } | |
| void UmaHistogramCustomTimes(const std::string& name, | |
| TimeDelta sample, | |
| TimeDelta min, | |
| TimeDelta max, | |
| int buckets) { | |
| HistogramBase* histogram = Histogram::FactoryTimeGet( | |
| name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag); | |
| histogram->AddTimeMillisecondsGranularity(sample); | |
| } | |
| void UmaHistogramTimes(const std::string& name, TimeDelta sample) { | |
| UmaHistogramCustomTimes(name, sample, TimeDelta::FromMilliseconds(1), | |
| TimeDelta::FromSeconds(10), 50); | |
| } | |
| void UmaHistogramMediumTimes(const std::string& name, TimeDelta sample) { | |
| UmaHistogramCustomTimes(name, sample, TimeDelta::FromMilliseconds(1), | |
| TimeDelta::FromMinutes(3), 50); | |
| } | |
| void UmaHistogramLongTimes(const std::string& name, TimeDelta sample) { | |
| UmaHistogramCustomTimes(name, sample, TimeDelta::FromMilliseconds(1), | |
| TimeDelta::FromHours(1), 50); | |
| } | |
| void UmaHistogramMemoryKB(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1000, 500000, 50); | |
| } | |
| void UmaHistogramMemoryMB(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 1000, 50); | |
| } | |
| void UmaHistogramMemoryLargeMB(const std::string& name, int sample) { | |
| UmaHistogramCustomCounts(name, sample, 1, 64000, 100); | |
| } | |
| void UmaHistogramSparse(const std::string& name, int sample) { | |
| HistogramBase* histogram = SparseHistogram::FactoryGet( | |
| name, HistogramBase::kUmaTargetedHistogramFlag); | |
| histogram->Add(sample); | |
| } | |
| } // namespace base |