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 5 #ifndef BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_ 6 #define BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_ 7 8 #include "base/logging.h" 9 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram_macros_internal.h" 11 #include "base/time/time.h" 12 13 // TODO(rkaplow): Migrate all LOCAL_* usage within Chromium to include this 14 // file instead of the histogram_macros.h file. 15 16 //------------------------------------------------------------------------------ 17 // Enumeration histograms. 18 // 19 // For usage details, see the equivalents in histogram_macros.h. 20 21 #define LOCAL_HISTOGRAM_ENUMERATION(name, sample, enum_max) \ 22 INTERNAL_HISTOGRAM_ENUMERATION_WITH_FLAG( \ 23 name, sample, enum_max, \ 24 base::HistogramBase::kNoFlags) 25 26 #define LOCAL_HISTOGRAM_BOOLEAN(name, sample) \ 27 STATIC_HISTOGRAM_POINTER_BLOCK(name, AddBoolean(sample), \ 28 base::BooleanHistogram::FactoryGet(name, base::Histogram::kNoFlags)) 29 30 //------------------------------------------------------------------------------ 31 // Percentage histograms. 32 // 33 // For usage details, see the equivalents in histogram_macros.h 34 35 #define LOCAL_HISTOGRAM_PERCENTAGE(name, under_one_hundred) \ 36 LOCAL_HISTOGRAM_ENUMERATION(name, under_one_hundred, 101) 37 38 //------------------------------------------------------------------------------ 39 // Count histograms. These are used for collecting numeric data. Note that we 40 // have macros for more specialized use cases below (memory, time, percentages). 41 // For usage details, see the equivalents in histogram_macros.h. 42 43 #define LOCAL_HISTOGRAM_COUNTS_100(name, sample) \ 44 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 100, 50) 45 46 #define LOCAL_HISTOGRAM_COUNTS_10000(name, sample) \ 47 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 10000, 50) 48 49 #define LOCAL_HISTOGRAM_COUNTS_1000000(name, sample) \ 50 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 1000000, 50) 51 52 #define LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, min, max, bucket_count) \ 53 INTERNAL_HISTOGRAM_CUSTOM_COUNTS_WITH_FLAG( \ 54 name, sample, min, max, bucket_count, base::HistogramBase::kNoFlags) 55 56 //------------------------------------------------------------------------------ 57 // Timing histograms. These are used for collecting timing data (generally 58 // latencies). 59 // 60 // For usage details, see the equivalents in histogram_macros.h. 61 62 #define LOCAL_HISTOGRAM_TIMES(name, sample) LOCAL_HISTOGRAM_CUSTOM_TIMES( \ 63 name, sample, base::TimeDelta::FromMilliseconds(1), \ 64 base::TimeDelta::FromSeconds(10), 50) 65 66 #define LOCAL_HISTOGRAM_CUSTOM_TIMES(name, sample, min, max, bucket_count) \ 67 STATIC_HISTOGRAM_POINTER_BLOCK(name, AddTime(sample), \ 68 base::Histogram::FactoryTimeGet(name, min, max, bucket_count, \ 69 base::HistogramBase::kNoFlags)) 70 71 //------------------------------------------------------------------------------ 72 // Memory histograms. 73 // 74 // For usage details, see the equivalents in histogram_macros.h. 75 76 #define LOCAL_HISTOGRAM_MEMORY_KB(name, sample) LOCAL_HISTOGRAM_CUSTOM_COUNTS( \ 77 name, sample, 1000, 500000, 50) 78 79 //------------------------------------------------------------------------------ 80 // Deprecated histograms. Not recommended for current use. 81 82 // TODO(rkaplow): See if we can clean up this macro and usage. 83 // Legacy non-explicit version. We suggest using LOCAL_HISTOGRAM_COUNTS_1000000 84 // instead. 85 #define LOCAL_HISTOGRAM_COUNTS(name, sample) \ 86 LOCAL_HISTOGRAM_CUSTOM_COUNTS(name, sample, 1, 1000000, 50) 87 88 #endif // BASE_METRICS_HISTOGRAM_MACROS_LOCAL_H_ 89