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 #include "base/metrics/sparse_histogram.h" | 5 #include "base/metrics/sparse_histogram.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/memory/ptr_util.h" | 9 #include "base/memory/ptr_util.h" |
10 #include "base/metrics/metrics_hashes.h" | 10 #include "base/metrics/metrics_hashes.h" |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
67 } else { | 67 } else { |
68 ReportHistogramActivity(*histogram, HISTOGRAM_LOOKUP); | 68 ReportHistogramActivity(*histogram, HISTOGRAM_LOOKUP); |
69 } | 69 } |
70 | 70 |
71 DCHECK_EQ(SPARSE_HISTOGRAM, histogram->GetHistogramType()); | 71 DCHECK_EQ(SPARSE_HISTOGRAM, histogram->GetHistogramType()); |
72 return histogram; | 72 return histogram; |
73 } | 73 } |
74 | 74 |
75 // static | 75 // static |
76 std::unique_ptr<HistogramBase> SparseHistogram::PersistentCreate( | 76 std::unique_ptr<HistogramBase> SparseHistogram::PersistentCreate( |
77 PersistentMemoryAllocator* allocator, | 77 PersistentHistogramAllocator* allocator, |
78 const std::string& name, | 78 const std::string& name, |
79 HistogramSamples::Metadata* meta, | 79 HistogramSamples::Metadata* meta, |
80 HistogramSamples::Metadata* logged_meta) { | 80 HistogramSamples::Metadata* logged_meta) { |
81 return WrapUnique( | 81 return WrapUnique( |
82 new SparseHistogram(allocator, name, meta, logged_meta)); | 82 new SparseHistogram(allocator, name, meta, logged_meta)); |
83 } | 83 } |
84 | 84 |
85 SparseHistogram::~SparseHistogram() {} | 85 SparseHistogram::~SparseHistogram() {} |
86 | 86 |
87 uint64_t SparseHistogram::name_hash() const { | 87 uint64_t SparseHistogram::name_hash() const { |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
158 | 158 |
159 bool SparseHistogram::SerializeInfoImpl(Pickle* pickle) const { | 159 bool SparseHistogram::SerializeInfoImpl(Pickle* pickle) const { |
160 return pickle->WriteString(histogram_name()) && pickle->WriteInt(flags()); | 160 return pickle->WriteString(histogram_name()) && pickle->WriteInt(flags()); |
161 } | 161 } |
162 | 162 |
163 SparseHistogram::SparseHistogram(const std::string& name) | 163 SparseHistogram::SparseHistogram(const std::string& name) |
164 : HistogramBase(name), | 164 : HistogramBase(name), |
165 samples_(new SampleMap(HashMetricName(name))), | 165 samples_(new SampleMap(HashMetricName(name))), |
166 logged_samples_(new SampleMap(samples_->id())) {} | 166 logged_samples_(new SampleMap(samples_->id())) {} |
167 | 167 |
168 SparseHistogram::SparseHistogram(PersistentMemoryAllocator* allocator, | 168 SparseHistogram::SparseHistogram(PersistentHistogramAllocator* allocator, |
169 const std::string& name, | 169 const std::string& name, |
170 HistogramSamples::Metadata* meta, | 170 HistogramSamples::Metadata* meta, |
171 HistogramSamples::Metadata* logged_meta) | 171 HistogramSamples::Metadata* logged_meta) |
172 : HistogramBase(name), | 172 : HistogramBase(name), |
173 // While other histogram types maintain a static vector of values with | 173 // While other histogram types maintain a static vector of values with |
174 // sufficient space for both "active" and "logged" samples, with each | 174 // sufficient space for both "active" and "logged" samples, with each |
175 // SampleVector being given the appropriate half, sparse histograms | 175 // SampleVector being given the appropriate half, sparse histograms |
176 // have no such initial allocation. Each sample has its own record | 176 // have no such initial allocation. Each sample has its own record |
177 // attached to a single PersistentSampleMap by a common 64-bit identifier. | 177 // attached to a single PersistentSampleMap by a common 64-bit identifier. |
178 // Since a sparse histogram has two sample maps (active and logged), | 178 // Since a sparse histogram has two sample maps (active and logged), |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
266 std::string* output) const { | 266 std::string* output) const { |
267 StringAppendF(output, | 267 StringAppendF(output, |
268 "Histogram: %s recorded %d samples", | 268 "Histogram: %s recorded %d samples", |
269 histogram_name().c_str(), | 269 histogram_name().c_str(), |
270 total_count); | 270 total_count); |
271 if (flags() & ~kHexRangePrintingFlag) | 271 if (flags() & ~kHexRangePrintingFlag) |
272 StringAppendF(output, " (flags = 0x%x)", flags() & ~kHexRangePrintingFlag); | 272 StringAppendF(output, " (flags = 0x%x)", flags() & ~kHexRangePrintingFlag); |
273 } | 273 } |
274 | 274 |
275 } // namespace base | 275 } // namespace base |
OLD | NEW |