Home | History | Annotate | Download | only in metrics
      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