histogram_functions.cc 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247
  1. // Copyright 2016 The Chromium Authors. All rights reserved.
  2. // Use of this source code is governed by a BSD-style license that can be
  3. // found in the LICENSE file.
  4. #include "base/metrics/histogram_functions.h"
  5. #include "base/metrics/histogram.h"
  6. #include "base/metrics/histogram_base.h"
  7. #include "base/metrics/sparse_histogram.h"
  8. #include "base/time/time.h"
  9. namespace base {
  10. void UmaHistogramBoolean(const std::string& name, bool sample) {
  11. HistogramBase* histogram = BooleanHistogram::FactoryGet(
  12. name, HistogramBase::kUmaTargetedHistogramFlag);
  13. histogram->Add(sample);
  14. }
  15. void UmaHistogramBoolean(const char* name, bool sample) {
  16. HistogramBase* histogram = BooleanHistogram::FactoryGet(
  17. name, HistogramBase::kUmaTargetedHistogramFlag);
  18. histogram->Add(sample);
  19. }
  20. void UmaHistogramExactLinear(const std::string& name,
  21. int sample,
  22. int exclusive_max) {
  23. HistogramBase* histogram = LinearHistogram::FactoryGet(
  24. name, 1, exclusive_max, static_cast<size_t>(exclusive_max + 1),
  25. HistogramBase::kUmaTargetedHistogramFlag);
  26. histogram->Add(sample);
  27. }
  28. void UmaHistogramExactLinear(const char* name, int sample, int exclusive_max) {
  29. HistogramBase* histogram = LinearHistogram::FactoryGet(
  30. name, 1, exclusive_max, static_cast<size_t>(exclusive_max + 1),
  31. HistogramBase::kUmaTargetedHistogramFlag);
  32. histogram->Add(sample);
  33. }
  34. void UmaHistogramPercentage(const std::string& name, int percent) {
  35. UmaHistogramExactLinear(name, percent, 101);
  36. }
  37. void UmaHistogramPercentage(const char* name, int percent) {
  38. UmaHistogramExactLinear(name, percent, 101);
  39. }
  40. void UmaHistogramPercentageObsoleteDoNotUse(const std::string& name,
  41. int percent) {
  42. UmaHistogramExactLinear(name, percent, 100);
  43. }
  44. void UmaHistogramPercentageObsoleteDoNotUse(const char* name, int percent) {
  45. UmaHistogramExactLinear(name, percent, 100);
  46. }
  47. void UmaHistogramCustomCounts(const std::string& name,
  48. int sample,
  49. int min,
  50. int exclusive_max,
  51. size_t buckets) {
  52. HistogramBase* histogram =
  53. Histogram::FactoryGet(name, min, exclusive_max, buckets,
  54. HistogramBase::kUmaTargetedHistogramFlag);
  55. histogram->Add(sample);
  56. }
  57. void UmaHistogramCustomCounts(const char* name,
  58. int sample,
  59. int min,
  60. int exclusive_max,
  61. size_t buckets) {
  62. HistogramBase* histogram =
  63. Histogram::FactoryGet(name, min, exclusive_max, buckets,
  64. HistogramBase::kUmaTargetedHistogramFlag);
  65. histogram->Add(sample);
  66. }
  67. void UmaHistogramCounts100(const std::string& name, int sample) {
  68. UmaHistogramCustomCounts(name, sample, 1, 100, 50);
  69. }
  70. void UmaHistogramCounts100(const char* name, int sample) {
  71. UmaHistogramCustomCounts(name, sample, 1, 100, 50);
  72. }
  73. void UmaHistogramCounts1000(const std::string& name, int sample) {
  74. UmaHistogramCustomCounts(name, sample, 1, 1000, 50);
  75. }
  76. void UmaHistogramCounts1000(const char* name, int sample) {
  77. UmaHistogramCustomCounts(name, sample, 1, 1000, 50);
  78. }
  79. void UmaHistogramCounts10000(const std::string& name, int sample) {
  80. UmaHistogramCustomCounts(name, sample, 1, 10000, 50);
  81. }
  82. void UmaHistogramCounts10000(const char* name, int sample) {
  83. UmaHistogramCustomCounts(name, sample, 1, 10000, 50);
  84. }
  85. void UmaHistogramCounts100000(const std::string& name, int sample) {
  86. UmaHistogramCustomCounts(name, sample, 1, 100000, 50);
  87. }
  88. void UmaHistogramCounts100000(const char* name, int sample) {
  89. UmaHistogramCustomCounts(name, sample, 1, 100000, 50);
  90. }
  91. void UmaHistogramCounts1M(const std::string& name, int sample) {
  92. UmaHistogramCustomCounts(name, sample, 1, 1000000, 50);
  93. }
  94. void UmaHistogramCounts1M(const char* name, int sample) {
  95. UmaHistogramCustomCounts(name, sample, 1, 1000000, 50);
  96. }
  97. void UmaHistogramCounts10M(const std::string& name, int sample) {
  98. UmaHistogramCustomCounts(name, sample, 1, 10000000, 50);
  99. }
  100. void UmaHistogramCounts10M(const char* name, int sample) {
  101. UmaHistogramCustomCounts(name, sample, 1, 10000000, 50);
  102. }
  103. void UmaHistogramCustomTimes(const std::string& name,
  104. TimeDelta sample,
  105. TimeDelta min,
  106. TimeDelta max,
  107. size_t buckets) {
  108. HistogramBase* histogram = Histogram::FactoryTimeGet(
  109. name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag);
  110. histogram->AddTimeMillisecondsGranularity(sample);
  111. }
  112. void UmaHistogramCustomTimes(const char* name,
  113. TimeDelta sample,
  114. TimeDelta min,
  115. TimeDelta max,
  116. size_t buckets) {
  117. HistogramBase* histogram = Histogram::FactoryTimeGet(
  118. name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag);
  119. histogram->AddTimeMillisecondsGranularity(sample);
  120. }
  121. void UmaHistogramTimes(const std::string& name, TimeDelta sample) {
  122. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Seconds(10), 50);
  123. }
  124. void UmaHistogramTimes(const char* name, TimeDelta sample) {
  125. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Seconds(10), 50);
  126. }
  127. void UmaHistogramMediumTimes(const std::string& name, TimeDelta sample) {
  128. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Minutes(3), 50);
  129. }
  130. void UmaHistogramMediumTimes(const char* name, TimeDelta sample) {
  131. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Minutes(3), 50);
  132. }
  133. void UmaHistogramLongTimes(const std::string& name, TimeDelta sample) {
  134. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Hours(1), 50);
  135. }
  136. void UmaHistogramLongTimes(const char* name, TimeDelta sample) {
  137. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Hours(1), 50);
  138. }
  139. void UmaHistogramLongTimes100(const std::string& name, TimeDelta sample) {
  140. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Hours(1), 100);
  141. }
  142. void UmaHistogramLongTimes100(const char* name, TimeDelta sample) {
  143. UmaHistogramCustomTimes(name, sample, Milliseconds(1), Hours(1), 100);
  144. }
  145. void UmaHistogramCustomMicrosecondsTimes(const std::string& name,
  146. TimeDelta sample,
  147. TimeDelta min,
  148. TimeDelta max,
  149. size_t buckets) {
  150. HistogramBase* histogram = Histogram::FactoryMicrosecondsTimeGet(
  151. name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag);
  152. histogram->AddTimeMicrosecondsGranularity(sample);
  153. }
  154. void UmaHistogramCustomMicrosecondsTimes(const char* name,
  155. TimeDelta sample,
  156. TimeDelta min,
  157. TimeDelta max,
  158. size_t buckets) {
  159. HistogramBase* histogram = Histogram::FactoryMicrosecondsTimeGet(
  160. name, min, max, buckets, HistogramBase::kUmaTargetedHistogramFlag);
  161. histogram->AddTimeMicrosecondsGranularity(sample);
  162. }
  163. void UmaHistogramMicrosecondsTimes(const std::string& name, TimeDelta sample) {
  164. UmaHistogramCustomMicrosecondsTimes(name, sample, Microseconds(1),
  165. Seconds(10), 50);
  166. }
  167. void UmaHistogramMicrosecondsTimes(const char* name, TimeDelta sample) {
  168. UmaHistogramCustomMicrosecondsTimes(name, sample, Microseconds(1),
  169. Seconds(10), 50);
  170. }
  171. void UmaHistogramMemoryKB(const std::string& name, int sample) {
  172. UmaHistogramCustomCounts(name, sample, 1000, 500000, 50);
  173. }
  174. void UmaHistogramMemoryKB(const char* name, int sample) {
  175. UmaHistogramCustomCounts(name, sample, 1000, 500000, 50);
  176. }
  177. void UmaHistogramMemoryMB(const std::string& name, int sample) {
  178. UmaHistogramCustomCounts(name, sample, 1, 1000, 50);
  179. }
  180. void UmaHistogramMemoryMB(const char* name, int sample) {
  181. UmaHistogramCustomCounts(name, sample, 1, 1000, 50);
  182. }
  183. void UmaHistogramMemoryLargeMB(const std::string& name, int sample) {
  184. UmaHistogramCustomCounts(name, sample, 1, 64000, 100);
  185. }
  186. void UmaHistogramMemoryLargeMB(const char* name, int sample) {
  187. UmaHistogramCustomCounts(name, sample, 1, 64000, 100);
  188. }
  189. void UmaHistogramSparse(const std::string& name, int sample) {
  190. HistogramBase* histogram = SparseHistogram::FactoryGet(
  191. name, HistogramBase::kUmaTargetedHistogramFlag);
  192. histogram->Add(sample);
  193. }
  194. void UmaHistogramSparse(const char* name, int sample) {
  195. HistogramBase* histogram = SparseHistogram::FactoryGet(
  196. name, HistogramBase::kUmaTargetedHistogramFlag);
  197. histogram->Add(sample);
  198. }
  199. } // namespace base