| Index: base/metrics/stats_counters.h
|
| diff --git a/base/metrics/stats_counters.h b/base/metrics/stats_counters.h
|
| deleted file mode 100644
|
| index 0f8354f26a4ba6b26c8abba88dbb5a499fcc4dc2..0000000000000000000000000000000000000000
|
| --- a/base/metrics/stats_counters.h
|
| +++ /dev/null
|
| @@ -1,197 +0,0 @@
|
| -// Copyright (c) 2011 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.
|
| -
|
| -#ifndef BASE_METRICS_STATS_COUNTERS_H_
|
| -#define BASE_METRICS_STATS_COUNTERS_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/base_export.h"
|
| -#include "base/compiler_specific.h"
|
| -#include "base/metrics/stats_table.h"
|
| -#include "base/time/time.h"
|
| -
|
| -namespace base {
|
| -
|
| -// StatsCounters are dynamically created values which can be tracked in
|
| -// the StatsTable. They are designed to be lightweight to create and
|
| -// easy to use.
|
| -//
|
| -// Since StatsCounters can be created dynamically by name, there is
|
| -// a hash table lookup to find the counter in the table. A StatsCounter
|
| -// object can be created once and used across multiple threads safely.
|
| -//
|
| -// Example usage:
|
| -// {
|
| -// StatsCounter request_count("RequestCount");
|
| -// request_count.Increment();
|
| -// }
|
| -//
|
| -// Note that creating counters on the stack does work, however creating
|
| -// the counter object requires a hash table lookup. For inner loops, it
|
| -// may be better to create the counter either as a member of another object
|
| -// (or otherwise outside of the loop) for maximum performance.
|
| -//
|
| -// Internally, a counter represents a value in a row of a StatsTable.
|
| -// The row has a 32bit value for each process/thread in the table and also
|
| -// a name (stored in the table metadata).
|
| -//
|
| -// NOTE: In order to make stats_counters usable in lots of different code,
|
| -// avoid any dependencies inside this header file.
|
| -//
|
| -
|
| -//------------------------------------------------------------------------------
|
| -// Define macros for ease of use. They also allow us to change definitions
|
| -// as the implementation varies, or depending on compile options.
|
| -//------------------------------------------------------------------------------
|
| -// First provide generic macros, which exist in production as well as debug.
|
| -#define STATS_COUNTER(name, delta) do { \
|
| - base::StatsCounter counter(name); \
|
| - counter.Add(delta); \
|
| -} while (0)
|
| -
|
| -#define SIMPLE_STATS_COUNTER(name) STATS_COUNTER(name, 1)
|
| -
|
| -#define RATE_COUNTER(name, duration) do { \
|
| - base::StatsRate hit_count(name); \
|
| - hit_count.AddTime(duration); \
|
| -} while (0)
|
| -
|
| -// Define Debug vs non-debug flavors of macros.
|
| -#ifndef NDEBUG
|
| -
|
| -#define DSTATS_COUNTER(name, delta) STATS_COUNTER(name, delta)
|
| -#define DSIMPLE_STATS_COUNTER(name) SIMPLE_STATS_COUNTER(name)
|
| -#define DRATE_COUNTER(name, duration) RATE_COUNTER(name, duration)
|
| -
|
| -#else // NDEBUG
|
| -
|
| -#define DSTATS_COUNTER(name, delta) do {} while (0)
|
| -#define DSIMPLE_STATS_COUNTER(name) do {} while (0)
|
| -#define DRATE_COUNTER(name, duration) do {} while (0)
|
| -
|
| -#endif // NDEBUG
|
| -
|
| -//------------------------------------------------------------------------------
|
| -// StatsCounter represents a counter in the StatsTable class.
|
| -class BASE_EXPORT StatsCounter {
|
| - public:
|
| - // Create a StatsCounter object.
|
| - explicit StatsCounter(const std::string& name);
|
| - virtual ~StatsCounter();
|
| -
|
| - // Sets the counter to a specific value.
|
| - void Set(int value);
|
| -
|
| - // Increments the counter.
|
| - void Increment() {
|
| - Add(1);
|
| - }
|
| -
|
| - virtual void Add(int value);
|
| -
|
| - // Decrements the counter.
|
| - void Decrement() {
|
| - Add(-1);
|
| - }
|
| -
|
| - void Subtract(int value) {
|
| - Add(-value);
|
| - }
|
| -
|
| - // Is this counter enabled?
|
| - // Returns false if table is full.
|
| - bool Enabled() {
|
| - return GetPtr() != NULL;
|
| - }
|
| -
|
| - int value() {
|
| - int* loc = GetPtr();
|
| - if (loc) return *loc;
|
| - return 0;
|
| - }
|
| -
|
| - protected:
|
| - StatsCounter();
|
| -
|
| - // Returns the cached address of this counter location.
|
| - int* GetPtr();
|
| -
|
| - std::string name_;
|
| - // The counter id in the table. We initialize to -1 (an invalid value)
|
| - // and then cache it once it has been looked up. The counter_id is
|
| - // valid across all threads and processes.
|
| - int32 counter_id_;
|
| -};
|
| -
|
| -
|
| -// A StatsCounterTimer is a StatsCounter which keeps a timer during
|
| -// the scope of the StatsCounterTimer. On destruction, it will record
|
| -// its time measurement.
|
| -class BASE_EXPORT StatsCounterTimer : protected StatsCounter {
|
| - public:
|
| - // Constructs and starts the timer.
|
| - explicit StatsCounterTimer(const std::string& name);
|
| - ~StatsCounterTimer() override;
|
| -
|
| - // Start the timer.
|
| - void Start();
|
| -
|
| - // Stop the timer and record the results.
|
| - void Stop();
|
| -
|
| - // Returns true if the timer is running.
|
| - bool Running();
|
| -
|
| - // Accept a TimeDelta to increment.
|
| - virtual void AddTime(TimeDelta time);
|
| -
|
| - protected:
|
| - // Compute the delta between start and stop, in milliseconds.
|
| - void Record();
|
| -
|
| - TimeTicks start_time_;
|
| - TimeTicks stop_time_;
|
| -};
|
| -
|
| -// A StatsRate is a timer that keeps a count of the number of intervals added so
|
| -// that several statistics can be produced:
|
| -// min, max, avg, count, total
|
| -class BASE_EXPORT StatsRate : public StatsCounterTimer {
|
| - public:
|
| - // Constructs and starts the timer.
|
| - explicit StatsRate(const std::string& name);
|
| - ~StatsRate() override;
|
| -
|
| - void Add(int value) override;
|
| -
|
| - private:
|
| - StatsCounter counter_;
|
| - StatsCounter largest_add_;
|
| -};
|
| -
|
| -
|
| -// Helper class for scoping a timer or rate.
|
| -template<class T> class StatsScope {
|
| - public:
|
| - explicit StatsScope<T>(T& timer)
|
| - : timer_(timer) {
|
| - timer_.Start();
|
| - }
|
| -
|
| - ~StatsScope() {
|
| - timer_.Stop();
|
| - }
|
| -
|
| - void Stop() {
|
| - timer_.Stop();
|
| - }
|
| -
|
| - private:
|
| - T& timer_;
|
| -};
|
| -
|
| -} // namespace base
|
| -
|
| -#endif // BASE_METRICS_STATS_COUNTERS_H_
|
|
|