Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 // See header file for details and examples. | 8 // See header file for details and examples. |
| 9 | 9 |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 111 histogram_type_(histogram_type), | 111 histogram_type_(histogram_type), |
| 112 minimum_(minimum), | 112 minimum_(minimum), |
| 113 maximum_(maximum), | 113 maximum_(maximum), |
| 114 bucket_count_(bucket_count), | 114 bucket_count_(bucket_count), |
| 115 flags_(flags) {} | 115 flags_(flags) {} |
| 116 | 116 |
| 117 // Create a BucketRanges structure appropriate for this histogram. | 117 // Create a BucketRanges structure appropriate for this histogram. |
| 118 virtual BucketRanges* CreateRanges() { | 118 virtual BucketRanges* CreateRanges() { |
| 119 BucketRanges* ranges = new BucketRanges(bucket_count_ + 1); | 119 BucketRanges* ranges = new BucketRanges(bucket_count_ + 1); |
| 120 Histogram::InitializeBucketRanges(minimum_, maximum_, ranges); | 120 Histogram::InitializeBucketRanges(minimum_, maximum_, ranges); |
| 121 base::debug::Alias(&ranges); // TODO(bcwhite): Remove after crbug/586622. | |
|
brucedawson
2017/08/17 19:28:00
Be aware that this technique doesn't work very wel
bcwhite
2017/08/18 05:09:01
Yeah... I've noticed that. :-( It would be nice
| |
| 121 return ranges; | 122 return ranges; |
| 122 } | 123 } |
| 123 | 124 |
| 124 // Allocate the correct Histogram object off the heap (in case persistent | 125 // Allocate the correct Histogram object off the heap (in case persistent |
| 125 // memory is not available). | 126 // memory is not available). |
| 126 virtual std::unique_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) { | 127 virtual std::unique_ptr<HistogramBase> HeapAlloc(const BucketRanges* ranges) { |
| 127 return WrapUnique(new Histogram(name_, minimum_, maximum_, ranges)); | 128 return WrapUnique(new Histogram(name_, minimum_, maximum_, ranges)); |
| 128 } | 129 } |
| 129 | 130 |
| 130 // Perform any required datafill on the just-created histogram. If | 131 // Perform any required datafill on the just-created histogram. If |
| (...skipping 642 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 773 const DescriptionPair* descriptions) | 774 const DescriptionPair* descriptions) |
| 774 : Histogram::Factory(name, LINEAR_HISTOGRAM, minimum, maximum, | 775 : Histogram::Factory(name, LINEAR_HISTOGRAM, minimum, maximum, |
| 775 bucket_count, flags) { | 776 bucket_count, flags) { |
| 776 descriptions_ = descriptions; | 777 descriptions_ = descriptions; |
| 777 } | 778 } |
| 778 | 779 |
| 779 protected: | 780 protected: |
| 780 BucketRanges* CreateRanges() override { | 781 BucketRanges* CreateRanges() override { |
| 781 BucketRanges* ranges = new BucketRanges(bucket_count_ + 1); | 782 BucketRanges* ranges = new BucketRanges(bucket_count_ + 1); |
| 782 LinearHistogram::InitializeBucketRanges(minimum_, maximum_, ranges); | 783 LinearHistogram::InitializeBucketRanges(minimum_, maximum_, ranges); |
| 784 base::debug::Alias(&ranges); // TODO(bcwhite): Remove after crbug/586622. | |
| 783 return ranges; | 785 return ranges; |
| 784 } | 786 } |
| 785 | 787 |
| 786 std::unique_ptr<HistogramBase> HeapAlloc( | 788 std::unique_ptr<HistogramBase> HeapAlloc( |
| 787 const BucketRanges* ranges) override { | 789 const BucketRanges* ranges) override { |
| 788 return WrapUnique(new LinearHistogram(name_, minimum_, maximum_, ranges)); | 790 return WrapUnique(new LinearHistogram(name_, minimum_, maximum_, ranges)); |
| 789 } | 791 } |
| 790 | 792 |
| 791 void FillHistogram(HistogramBase* base_histogram) override { | 793 void FillHistogram(HistogramBase* base_histogram) override { |
| 792 Histogram::Factory::FillHistogram(base_histogram); | 794 Histogram::Factory::FillHistogram(base_histogram); |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 968 | 970 |
| 969 class BooleanHistogram::Factory : public Histogram::Factory { | 971 class BooleanHistogram::Factory : public Histogram::Factory { |
| 970 public: | 972 public: |
| 971 Factory(const std::string& name, int32_t flags) | 973 Factory(const std::string& name, int32_t flags) |
| 972 : Histogram::Factory(name, BOOLEAN_HISTOGRAM, 1, 2, 3, flags) {} | 974 : Histogram::Factory(name, BOOLEAN_HISTOGRAM, 1, 2, 3, flags) {} |
| 973 | 975 |
| 974 protected: | 976 protected: |
| 975 BucketRanges* CreateRanges() override { | 977 BucketRanges* CreateRanges() override { |
| 976 BucketRanges* ranges = new BucketRanges(3 + 1); | 978 BucketRanges* ranges = new BucketRanges(3 + 1); |
| 977 LinearHistogram::InitializeBucketRanges(1, 2, ranges); | 979 LinearHistogram::InitializeBucketRanges(1, 2, ranges); |
| 980 base::debug::Alias(&ranges); // TODO(bcwhite): Remove after crbug/586622. | |
| 978 return ranges; | 981 return ranges; |
| 979 } | 982 } |
| 980 | 983 |
| 981 std::unique_ptr<HistogramBase> HeapAlloc( | 984 std::unique_ptr<HistogramBase> HeapAlloc( |
| 982 const BucketRanges* ranges) override { | 985 const BucketRanges* ranges) override { |
| 983 return WrapUnique(new BooleanHistogram(name_, ranges)); | 986 return WrapUnique(new BooleanHistogram(name_, ranges)); |
| 984 } | 987 } |
| 985 | 988 |
| 986 private: | 989 private: |
| 987 DISALLOW_COPY_AND_ASSIGN(Factory); | 990 DISALLOW_COPY_AND_ASSIGN(Factory); |
| (...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1221 Sample sample = custom_ranges[i]; | 1224 Sample sample = custom_ranges[i]; |
| 1222 if (sample < 0 || sample > HistogramBase::kSampleType_MAX - 1) | 1225 if (sample < 0 || sample > HistogramBase::kSampleType_MAX - 1) |
| 1223 return false; | 1226 return false; |
| 1224 if (sample != 0) | 1227 if (sample != 0) |
| 1225 has_valid_range = true; | 1228 has_valid_range = true; |
| 1226 } | 1229 } |
| 1227 return has_valid_range; | 1230 return has_valid_range; |
| 1228 } | 1231 } |
| 1229 | 1232 |
| 1230 } // namespace base | 1233 } // namespace base |
| OLD | NEW |