OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Histogram is an object that aggregates statistics, and can summarize them in | 5 // Histogram is an object that aggregates statistics, and can summarize them in |
6 // various forms, including ASCII graphical, HTML, and numerically (as a | 6 // various forms, including ASCII graphical, HTML, and numerically (as a |
7 // vector of numbers corresponding to each of the aggregating buckets). | 7 // vector of numbers corresponding to each of the aggregating buckets). |
8 | 8 |
9 // It supports calls to accumulate either time intervals (which are processed | 9 // It supports calls to accumulate either time intervals (which are processed |
10 // as integral number of milliseconds), or arbitrary integral units. | 10 // as integral number of milliseconds), or arbitrary integral units. |
(...skipping 200 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
211 // that fit into each bucket. | 211 // that fit into each bucket. |
212 Counts counts_; | 212 Counts counts_; |
213 | 213 |
214 // Save simple stats locally. Note that this MIGHT get done in base class | 214 // Save simple stats locally. Note that this MIGHT get done in base class |
215 // without shared memory at some point. | 215 // without shared memory at some point. |
216 int64 sum_; // sum of samples. | 216 int64 sum_; // sum of samples. |
217 int64 square_sum_; // sum of squares of samples. | 217 int64 square_sum_; // sum of squares of samples. |
218 }; | 218 }; |
219 //---------------------------------------------------------------------------- | 219 //---------------------------------------------------------------------------- |
220 | 220 |
221 Histogram(const wchar_t* name, Sample minimum, | 221 Histogram(const char* name, Sample minimum, |
222 Sample maximum, size_t bucket_count); | 222 Sample maximum, size_t bucket_count); |
223 Histogram(const wchar_t* name, base::TimeDelta minimum, | 223 Histogram(const char* name, base::TimeDelta minimum, |
224 base::TimeDelta maximum, size_t bucket_count); | 224 base::TimeDelta maximum, size_t bucket_count); |
225 virtual ~Histogram(); | 225 virtual ~Histogram(); |
226 | 226 |
227 // Hooks to override stats counter methods. This ensures that we gather all | 227 // Hooks to override stats counter methods. This ensures that we gather all |
228 // input the stats counter sees. | 228 // input the stats counter sees. |
229 virtual void Add(int value); | 229 virtual void Add(int value); |
230 | 230 |
231 // The following methods provide graphical histogram displays. | 231 // The following methods provide graphical histogram displays. |
232 void WriteHTMLGraph(std::string* output) const; | 232 void WriteHTMLGraph(std::string* output) const; |
233 void WriteAscii(bool graph_it, const std::string& newline, | 233 void WriteAscii(bool graph_it, const std::string& newline, |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
350 //------------------------------------------------------------------------------ | 350 //------------------------------------------------------------------------------ |
351 | 351 |
352 // LinearHistogram is a more traditional histogram, with evenly spaced | 352 // LinearHistogram is a more traditional histogram, with evenly spaced |
353 // buckets. | 353 // buckets. |
354 class LinearHistogram : public Histogram { | 354 class LinearHistogram : public Histogram { |
355 public: | 355 public: |
356 struct DescriptionPair { | 356 struct DescriptionPair { |
357 Sample sample; | 357 Sample sample; |
358 const char* description; // Null means end of a list of pairs. | 358 const char* description; // Null means end of a list of pairs. |
359 }; | 359 }; |
360 LinearHistogram(const wchar_t* name, Sample minimum, | 360 LinearHistogram(const char* name, Sample minimum, |
361 Sample maximum, size_t bucket_count); | 361 Sample maximum, size_t bucket_count); |
362 LinearHistogram(const wchar_t* name, base::TimeDelta minimum, | 362 LinearHistogram(const char* name, base::TimeDelta minimum, |
363 base::TimeDelta maximum, size_t bucket_count); | 363 base::TimeDelta maximum, size_t bucket_count); |
364 ~LinearHistogram() {} | 364 ~LinearHistogram() {} |
365 | 365 |
366 // Store a list of number/text values for use in rendering the histogram. | 366 // Store a list of number/text values for use in rendering the histogram. |
367 // The last element in the array has a null in its "description" slot. | 367 // The last element in the array has a null in its "description" slot. |
368 void SetRangeDescriptions(const DescriptionPair descriptions[]); | 368 void SetRangeDescriptions(const DescriptionPair descriptions[]); |
369 | 369 |
370 protected: | 370 protected: |
371 // Initialize ranges_ mapping. | 371 // Initialize ranges_ mapping. |
372 virtual void InitializeBucketRange(); | 372 virtual void InitializeBucketRange(); |
(...skipping 17 matching lines...) Expand all Loading... |
390 BucketDescriptionMap bucket_description_; | 390 BucketDescriptionMap bucket_description_; |
391 | 391 |
392 DISALLOW_EVIL_CONSTRUCTORS(LinearHistogram); | 392 DISALLOW_EVIL_CONSTRUCTORS(LinearHistogram); |
393 }; | 393 }; |
394 | 394 |
395 //------------------------------------------------------------------------------ | 395 //------------------------------------------------------------------------------ |
396 | 396 |
397 // BooleanHistogram is a histogram for booleans. | 397 // BooleanHistogram is a histogram for booleans. |
398 class BooleanHistogram : public LinearHistogram { | 398 class BooleanHistogram : public LinearHistogram { |
399 public: | 399 public: |
400 explicit BooleanHistogram(const wchar_t* name) | 400 explicit BooleanHistogram(const char* name) |
401 : LinearHistogram(name, 0, 2, 3) { | 401 : LinearHistogram(name, 0, 2, 3) { |
402 } | 402 } |
403 | 403 |
404 virtual void AddBoolean(bool value) { Add(value ? 1 : 0); } | 404 virtual void AddBoolean(bool value) { Add(value ? 1 : 0); } |
405 | 405 |
406 private: | 406 private: |
407 DISALLOW_EVIL_CONSTRUCTORS(BooleanHistogram); | 407 DISALLOW_EVIL_CONSTRUCTORS(BooleanHistogram); |
408 }; | 408 }; |
409 | 409 |
410 //------------------------------------------------------------------------------ | 410 //------------------------------------------------------------------------------ |
411 // This section provides implementation for ThreadSafeHistogram. | 411 // This section provides implementation for ThreadSafeHistogram. |
412 //------------------------------------------------------------------------------ | 412 //------------------------------------------------------------------------------ |
413 | 413 |
414 class ThreadSafeHistogram : public Histogram { | 414 class ThreadSafeHistogram : public Histogram { |
415 public: | 415 public: |
416 ThreadSafeHistogram(const wchar_t* name, Sample minimum, | 416 ThreadSafeHistogram(const char* name, Sample minimum, |
417 Sample maximum, size_t bucket_count); | 417 Sample maximum, size_t bucket_count); |
418 | 418 |
419 // Provide the analog to Add() | 419 // Provide the analog to Add() |
420 void Remove(int value); | 420 void Remove(int value); |
421 | 421 |
422 protected: | 422 protected: |
423 // Provide locked versions to get precise counts. | 423 // Provide locked versions to get precise counts. |
424 virtual void Accumulate(Sample value, Count count, size_t index); | 424 virtual void Accumulate(Sample value, Count count, size_t index); |
425 | 425 |
426 virtual void SnapshotSample(SampleSet* sample); | 426 virtual void SnapshotSample(SampleSet* sample); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
478 // lock protects access to the above map. | 478 // lock protects access to the above map. |
479 static Lock* lock_; | 479 static Lock* lock_; |
480 | 480 |
481 // Dump all known histograms to log. | 481 // Dump all known histograms to log. |
482 static bool dump_on_exit_; | 482 static bool dump_on_exit_; |
483 | 483 |
484 DISALLOW_EVIL_CONSTRUCTORS(StatisticsRecorder); | 484 DISALLOW_EVIL_CONSTRUCTORS(StatisticsRecorder); |
485 }; | 485 }; |
486 | 486 |
487 #endif // BASE_HISTOGRAM_H__ | 487 #endif // BASE_HISTOGRAM_H__ |
488 | |
OLD | NEW |