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

Side by Side Diff: base/metrics/histogram.h

Issue 2965083002: Reduce Histogram object size. (Closed)
Patch Set: added TODO to remove unnecessary parameters Created 3 years, 5 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
« no previous file with comments | « no previous file | base/metrics/histogram.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 // 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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
166 // consistent with the bucket ranges and checksums in our histogram. This can 166 // consistent with the bucket ranges and checksums in our histogram. This can
167 // produce a false-alarm if a race occurred in the reading of the data during 167 // produce a false-alarm if a race occurred in the reading of the data during
168 // a SnapShot process, but should otherwise be false at all times (unless we 168 // a SnapShot process, but should otherwise be false at all times (unless we
169 // have memory over-writes, or DRAM failures). Flag definitions are located 169 // have memory over-writes, or DRAM failures). Flag definitions are located
170 // under "enum Inconsistency" in base/metrics/histogram_base.h. 170 // under "enum Inconsistency" in base/metrics/histogram_base.h.
171 uint32_t FindCorruption(const HistogramSamples& samples) const override; 171 uint32_t FindCorruption(const HistogramSamples& samples) const override;
172 172
173 //---------------------------------------------------------------------------- 173 //----------------------------------------------------------------------------
174 // Accessors for factory construction, serialization and testing. 174 // Accessors for factory construction, serialization and testing.
175 //---------------------------------------------------------------------------- 175 //----------------------------------------------------------------------------
176 Sample declared_min() const { return declared_min_; } 176 Sample declared_min() const;
177 Sample declared_max() const { return declared_max_; } 177 Sample declared_max() const;
178 virtual Sample ranges(uint32_t i) const; 178 virtual Sample ranges(uint32_t i) const;
179 virtual uint32_t bucket_count() const; 179 virtual uint32_t bucket_count() const;
180 const BucketRanges* bucket_ranges() const { return bucket_ranges_; } 180 const BucketRanges* bucket_ranges() const { return bucket_ranges_; }
181 181
182 // This function validates histogram construction arguments. It returns false 182 // This function validates histogram construction arguments. It returns false
183 // if some of the arguments are bad but also corrects them so they should 183 // if some of the arguments are bad but also corrects them so they should
184 // function on non-dcheck builds without crashing. 184 // function on non-dcheck builds without crashing.
185 // Note. Currently it allow some bad input, e.g. 0 as minimum, but silently 185 // Note. Currently it allow some bad input, e.g. 0 as minimum, but silently
186 // converts it to good input: 1. 186 // converts it to good input: 1.
187 // TODO(bcwhite): Use false returns to create "sink" histograms so that bad 187 // TODO(bcwhite): Use false returns to create "sink" histograms so that bad
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 // WriteJSON calls these. 298 // WriteJSON calls these.
299 void GetParameters(DictionaryValue* params) const override; 299 void GetParameters(DictionaryValue* params) const override;
300 300
301 void GetCountAndBucketData(Count* count, 301 void GetCountAndBucketData(Count* count,
302 int64_t* sum, 302 int64_t* sum,
303 ListValue* buckets) const override; 303 ListValue* buckets) const override;
304 304
305 // Does not own this object. Should get from StatisticsRecorder. 305 // Does not own this object. Should get from StatisticsRecorder.
306 const BucketRanges* bucket_ranges_; 306 const BucketRanges* bucket_ranges_;
307 307
308 Sample declared_min_; // Less than this goes into the first bucket.
309 Sample declared_max_; // Over this goes into the last bucket.
310
311 // Samples that have not yet been logged with SnapshotDelta(). 308 // Samples that have not yet been logged with SnapshotDelta().
312 std::unique_ptr<HistogramSamples> unlogged_samples_; 309 std::unique_ptr<HistogramSamples> unlogged_samples_;
313 310
314 // Accumulation of all samples that have been logged with SnapshotDelta(). 311 // Accumulation of all samples that have been logged with SnapshotDelta().
315 std::unique_ptr<HistogramSamples> logged_samples_; 312 std::unique_ptr<HistogramSamples> logged_samples_;
316 313
314 #if DCHECK_IS_ON() // Don't waste memory if it won't be used.
317 // Flag to indicate if PrepareFinalDelta has been previously called. It is 315 // Flag to indicate if PrepareFinalDelta has been previously called. It is
318 // used to DCHECK that a final delta is not created multiple times. 316 // used to DCHECK that a final delta is not created multiple times.
319 mutable bool final_delta_created_ = false; 317 mutable bool final_delta_created_ = false;
318 #endif
320 319
321 DISALLOW_COPY_AND_ASSIGN(Histogram); 320 DISALLOW_COPY_AND_ASSIGN(Histogram);
322 }; 321 };
323 322
324 //------------------------------------------------------------------------------ 323 //------------------------------------------------------------------------------
325 324
326 // LinearHistogram is a more traditional histogram, with evenly spaced 325 // LinearHistogram is a more traditional histogram, with evenly spaced
327 // buckets. 326 // buckets.
328 class BASE_EXPORT LinearHistogram : public Histogram { 327 class BASE_EXPORT LinearHistogram : public Histogram {
329 public: 328 public:
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 static HistogramBase* DeserializeInfoImpl(base::PickleIterator* iter); 538 static HistogramBase* DeserializeInfoImpl(base::PickleIterator* iter);
540 539
541 static bool ValidateCustomRanges(const std::vector<Sample>& custom_ranges); 540 static bool ValidateCustomRanges(const std::vector<Sample>& custom_ranges);
542 541
543 DISALLOW_COPY_AND_ASSIGN(CustomHistogram); 542 DISALLOW_COPY_AND_ASSIGN(CustomHistogram);
544 }; 543 };
545 544
546 } // namespace base 545 } // namespace base
547 546
548 #endif // BASE_METRICS_HISTOGRAM_H_ 547 #endif // BASE_METRICS_HISTOGRAM_H_
OLDNEW
« no previous file with comments | « no previous file | base/metrics/histogram.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698