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

Side by Side Diff: base/metrics/sparse_histogram.cc

Issue 1880803003: Display histograms from subprocesses in chrome://histograms (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebased Created 4 years, 8 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 unified diff | Download patch
OLDNEW
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 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 void SparseHistogram::AddSamples(const HistogramSamples& samples) { 139 void SparseHistogram::AddSamples(const HistogramSamples& samples) {
140 base::AutoLock auto_lock(lock_); 140 base::AutoLock auto_lock(lock_);
141 samples_->Add(samples); 141 samples_->Add(samples);
142 } 142 }
143 143
144 bool SparseHistogram::AddSamplesFromPickle(PickleIterator* iter) { 144 bool SparseHistogram::AddSamplesFromPickle(PickleIterator* iter) {
145 base::AutoLock auto_lock(lock_); 145 base::AutoLock auto_lock(lock_);
146 return samples_->AddFromPickle(iter); 146 return samples_->AddFromPickle(iter);
147 } 147 }
148 148
149 void SparseHistogram::WriteHTMLGraph(std::string* output) const { 149 void SparseHistogram::WriteHTMLGraph(const HistogramSamples* snapshot,
150 std::string* output) const {
150 output->append("<PRE>"); 151 output->append("<PRE>");
151 WriteAsciiImpl(true, "<br>", output); 152 WriteAsciiImpl(true, "<br>", snapshot, output);
152 output->append("</PRE>"); 153 output->append("</PRE>");
153 } 154 }
154 155
155 void SparseHistogram::WriteAscii(std::string* output) const { 156 void SparseHistogram::WriteAscii(const HistogramSamples* snapshot,
156 WriteAsciiImpl(true, "\n", output); 157 std::string* output) const {
158 WriteAsciiImpl(true, "\n", snapshot, output);
157 } 159 }
158 160
159 bool SparseHistogram::SerializeInfoImpl(Pickle* pickle) const { 161 bool SparseHistogram::SerializeInfoImpl(Pickle* pickle) const {
160 return pickle->WriteString(histogram_name()) && pickle->WriteInt(flags()); 162 return pickle->WriteString(histogram_name()) && pickle->WriteInt(flags());
161 } 163 }
162 164
163 SparseHistogram::SparseHistogram(const std::string& name) 165 SparseHistogram::SparseHistogram(const std::string& name)
164 : HistogramBase(name), 166 : HistogramBase(name),
165 samples_(new SampleMap(HashMetricName(name))), 167 samples_(new SampleMap(HashMetricName(name))),
166 logged_samples_(new SampleMap(samples_->id())) {} 168 logged_samples_(new SampleMap(samples_->id())) {}
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
204 } 206 }
205 207
206 void SparseHistogram::GetCountAndBucketData(Count* count, 208 void SparseHistogram::GetCountAndBucketData(Count* count,
207 int64_t* sum, 209 int64_t* sum,
208 ListValue* buckets) const { 210 ListValue* buckets) const {
209 // TODO(kaiwang): Implement. (See HistogramBase::WriteJSON.) 211 // TODO(kaiwang): Implement. (See HistogramBase::WriteJSON.)
210 } 212 }
211 213
212 void SparseHistogram::WriteAsciiImpl(bool graph_it, 214 void SparseHistogram::WriteAsciiImpl(bool graph_it,
213 const std::string& newline, 215 const std::string& newline,
216 const HistogramSamples* snapshot,
214 std::string* output) const { 217 std::string* output) const {
215 // Get a local copy of the data so we are consistent. 218 // Get a local copy of the data so we are consistent.
Ilya Sherman 2016/04/13 00:29:32 Ditto
bcwhite 2016/04/13 11:58:18 Done.
216 std::unique_ptr<HistogramSamples> snapshot = SnapshotSamples(); 219 std::unique_ptr<HistogramSamples> local_snapshot;
220 if (!snapshot) {
221 local_snapshot = SnapshotSamples();
222 snapshot = local_snapshot.get();
223 }
217 Count total_count = snapshot->TotalCount(); 224 Count total_count = snapshot->TotalCount();
218 double scaled_total_count = total_count / 100.0; 225 double scaled_total_count = total_count / 100.0;
219 226
220 WriteAsciiHeader(total_count, output); 227 WriteAsciiHeader(total_count, output);
221 output->append(newline); 228 output->append(newline);
222 229
223 // Determine how wide the largest bucket range is (how many digits to print), 230 // Determine how wide the largest bucket range is (how many digits to print),
224 // so that we'll be able to right-align starts for the graphical bars. 231 // so that we'll be able to right-align starts for the graphical bars.
225 // Determine which bucket has the largest sample count so that we can 232 // Determine which bucket has the largest sample count so that we can
226 // normalize the graphical bar-width relative to that sample count. 233 // normalize the graphical bar-width relative to that sample count.
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
266 std::string* output) const { 273 std::string* output) const {
267 StringAppendF(output, 274 StringAppendF(output,
268 "Histogram: %s recorded %d samples", 275 "Histogram: %s recorded %d samples",
269 histogram_name().c_str(), 276 histogram_name().c_str(),
270 total_count); 277 total_count);
271 if (flags() & ~kHexRangePrintingFlag) 278 if (flags() & ~kHexRangePrintingFlag)
272 StringAppendF(output, " (flags = 0x%x)", flags() & ~kHexRangePrintingFlag); 279 StringAppendF(output, " (flags = 0x%x)", flags() & ~kHexRangePrintingFlag);
273 } 280 }
274 281
275 } // namespace base 282 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698