Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(299)

Unified Diff: remoting/base/running_average.h

Issue 12803008: Add unit tests for sub-components of CaptureScheduler. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address review comments. Created 7 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/base/running_average.h
diff --git a/remoting/base/running_average.h b/remoting/base/running_average.h
index bc556b9a0001cc1d5daa9753e943ac95d4a8db1b..ca9ffe17c9fe635b46e7d0b5b48648ca78742f95 100644
--- a/remoting/base/running_average.h
+++ b/remoting/base/running_average.h
@@ -2,14 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// RunningAverage defined in this file is used to generate statistics for
-// bandwidth, latency and other performance metrics for remoting. Usually
-// this data comes in as a stream and fluctuates a lot. They are processed by
-// this class to generate a more stable value by taking average within a
-// window of data points.
-
-// All classes defined are thread-safe.
-
#ifndef REMOTING_BASE_RUNNING_AVERAGE_H_
#define REMOTING_BASE_RUNNING_AVERAGE_H_
@@ -17,35 +9,34 @@
#include "base/basictypes.h"
#include "base/synchronization/lock.h"
alexeypa (please no reviews) 2013/03/19 23:36:55 nit: lock.h is not needed any more.
Wez 2013/03/20 00:17:27 Done.
+#include "base/threading/non_thread_safe.h"
namespace remoting {
-class RunningAverage {
+// Calculates the average of the most recent N recorded samples.
+// This is typically used to smooth out random variation in point samples
+// over bandwidth, frame rate, etc.
+class RunningAverage : public base::NonThreadSafe {
public:
- // Construct a running average counter for a specific window size. The
- // |windows_size| most recent values are kept and the average is reported.
+ // Constructs a helper to average over the |window_size| most recent samples.
explicit RunningAverage(int window_size);
-
virtual ~RunningAverage();
- // Record the provided data point.
+ // Records a point sample.
void Record(int64 value);
- // Return the average of data points in the last window.
- double Average();
+ // Returns the average over up to |window_size| of the most recent samples.
+ double Average() const;
private:
- // Size of the window. This is of type size_t to avoid casting when comparing
+ // Stores the desired window size, as size_t to avoid casting when comparing
// with the size of |data_points_|.
- size_t window_size_;
-
- // Protects |data_points_| and |sum_|.
- base::Lock lock_;
+ const size_t window_size_;
- // Keep the values of all the data points.
+ // Stores the |window_size| most recently recorded samples.
std::deque<int64> data_points_;
- // Sum of values in |data_points_|.
+ // Holds the sum of the samples in |data_points_|.
int64 sum_;
DISALLOW_COPY_AND_ASSIGN(RunningAverage);

Powered by Google App Engine
This is Rietveld 408576698