Index: base/metrics/histogram.cc |
diff --git a/base/metrics/histogram.cc b/base/metrics/histogram.cc |
index a3dd63a49c1f7cfbf2e8d77767215f0a9b609721..882269b058a6eb54443cbfbd43917ad1515d19d1 100644 |
--- a/base/metrics/histogram.cc |
+++ b/base/metrics/histogram.cc |
@@ -97,12 +97,12 @@ HistogramBase* Histogram::FactoryGet(const string& name, |
if (!histogram) { |
// To avoid racy destruction at shutdown, the following will be leaked. |
BucketRanges* ranges = new BucketRanges(bucket_count + 1); |
- InitializeBucketRanges(minimum, maximum, bucket_count, ranges); |
+ InitializeBucketRanges(minimum, maximum, ranges); |
const BucketRanges* registered_ranges = |
StatisticsRecorder::RegisterOrDeleteDuplicateRanges(ranges); |
Histogram* tentative_histogram = |
- new Histogram(name, minimum, maximum, bucket_count, registered_ranges); |
+ new Histogram(name, minimum, maximum, registered_ranges); |
tentative_histogram->SetFlags(flags); |
histogram = |
@@ -143,15 +143,14 @@ TimeTicks Histogram::DebugNow() { |
// static |
void Histogram::InitializeBucketRanges(Sample minimum, |
Sample maximum, |
- size_t bucket_count, |
BucketRanges* ranges) { |
- DCHECK_EQ(ranges->size(), bucket_count + 1); |
double log_max = log(static_cast<double>(maximum)); |
double log_ratio; |
double log_next; |
size_t bucket_index = 1; |
Sample current = minimum; |
ranges->set_range(bucket_index, current); |
+ size_t bucket_count = ranges->BucketCount(); |
while (bucket_count > ++bucket_index) { |
double log_current; |
log_current = log(static_cast<double>(current)); |
@@ -167,7 +166,7 @@ void Histogram::InitializeBucketRanges(Sample minimum, |
++current; // Just do a narrow bucket, and keep trying. |
ranges->set_range(bucket_index, current); |
} |
- ranges->set_range(ranges->size() - 1, HistogramBase::kSampleType_MAX); |
+ ranges->set_range(ranges->BucketCount(), HistogramBase::kSampleType_MAX); |
ranges->ResetChecksum(); |
} |
@@ -177,7 +176,7 @@ const int Histogram::kCommonRaceBasedCountMismatch = 5; |
int Histogram::FindCorruption(const HistogramSamples& samples) const { |
int inconsistencies = NO_INCONSISTENCIES; |
Sample previous_range = -1; // Bottom range is always 0. |
- for (size_t index = 0; index < bucket_count(); ++index) { |
+ for (size_t index = 0; index < BucketCount(); ++index) { |
int new_range = ranges(index); |
if (previous_range >= new_range) |
inconsistencies |= BUCKET_ORDER_ERROR; |
@@ -210,8 +209,8 @@ Sample Histogram::ranges(size_t i) const { |
return bucket_ranges_->range(i); |
} |
-size_t Histogram::bucket_count() const { |
- return bucket_count_; |
+size_t Histogram::BucketCount() const { |
+ return bucket_ranges_->BucketCount(); |
} |
// static |
@@ -251,12 +250,12 @@ bool Histogram::HasConstructionArguments(Sample minimum, |
Sample maximum, |
size_t bucket_count) const { |
return ((minimum == declared_min_) && (maximum == declared_max_) && |
- (bucket_count == bucket_count_)); |
+ (bucket_count == BucketCount())); |
} |
void Histogram::Add(int value) { |
DCHECK_EQ(0, ranges(0)); |
- DCHECK_EQ(kSampleType_MAX, ranges(bucket_count_)); |
+ DCHECK_EQ(kSampleType_MAX, ranges(BucketCount())); |
if (value > kSampleType_MAX - 1) |
value = kSampleType_MAX - 1; |
@@ -295,20 +294,18 @@ bool Histogram::SerializeInfoImpl(Pickle* pickle) const { |
pickle->WriteInt(flags()) && |
pickle->WriteInt(declared_min()) && |
pickle->WriteInt(declared_max()) && |
- pickle->WriteUInt64(bucket_count()) && |
+ pickle->WriteUInt64(BucketCount()) && |
pickle->WriteUInt32(bucket_ranges()->checksum()); |
} |
Histogram::Histogram(const string& name, |
Sample minimum, |
Sample maximum, |
- size_t bucket_count, |
const BucketRanges* ranges) |
: HistogramBase(name), |
bucket_ranges_(ranges), |
declared_min_(minimum), |
- declared_max_(maximum), |
- bucket_count_(bucket_count) { |
+ declared_max_(maximum) { |
if (ranges) |
samples_.reset(new SampleVector(ranges)); |
} |
@@ -390,7 +387,7 @@ void Histogram::WriteAsciiImpl(bool graph_it, |
// Calculate space needed to print bucket range numbers. Leave room to print |
// nearly the largest bucket range without sliding over the histogram. |
- size_t largest_non_empty_bucket = bucket_count() - 1; |
+ size_t largest_non_empty_bucket = BucketCount() - 1; |
while (0 == snapshot->GetCountAtIndex(largest_non_empty_bucket)) { |
if (0 == largest_non_empty_bucket) |
break; // All buckets are empty. |
@@ -399,7 +396,7 @@ void Histogram::WriteAsciiImpl(bool graph_it, |
// Calculate largest print width needed for any of our bucket range displays. |
size_t print_width = 1; |
- for (size_t i = 0; i < bucket_count(); ++i) { |
+ for (size_t i = 0; i < BucketCount(); ++i) { |
if (snapshot->GetCountAtIndex(i)) { |
size_t width = GetAsciiBucketRange(i).size() + 1; |
if (width > print_width) |
@@ -410,7 +407,7 @@ void Histogram::WriteAsciiImpl(bool graph_it, |
int64 remaining = sample_count; |
int64 past = 0; |
// Output the actual histogram graph. |
- for (size_t i = 0; i < bucket_count(); ++i) { |
+ for (size_t i = 0; i < BucketCount(); ++i) { |
Count current = snapshot->GetCountAtIndex(i); |
if (!current && !PrintEmptyBucket(i)) |
continue; |
@@ -419,9 +416,9 @@ void Histogram::WriteAsciiImpl(bool graph_it, |
output->append(range); |
for (size_t j = 0; range.size() + j < print_width + 1; ++j) |
output->push_back(' '); |
- if (0 == current && i < bucket_count() - 1 && |
+ if (0 == current && i < BucketCount() - 1 && |
0 == snapshot->GetCountAtIndex(i + 1)) { |
- while (i < bucket_count() - 1 && |
+ while (i < BucketCount() - 1 && |
0 == snapshot->GetCountAtIndex(i + 1)) { |
++i; |
} |
@@ -441,7 +438,7 @@ void Histogram::WriteAsciiImpl(bool graph_it, |
double Histogram::GetPeakBucketSize(const SampleVector& samples) const { |
double max = 0; |
- for (size_t i = 0; i < bucket_count() ; ++i) { |
+ for (size_t i = 0; i < BucketCount() ; ++i) { |
double current_size = GetBucketSize(samples.GetCountAtIndex(i), i); |
if (current_size > max) |
max = current_size; |
@@ -484,7 +481,7 @@ void Histogram::GetParameters(DictionaryValue* params) const { |
params->SetString("type", HistogramTypeToString(GetHistogramType())); |
params->SetInteger("min", declared_min()); |
params->SetInteger("max", declared_max()); |
- params->SetInteger("bucket_count", static_cast<int>(bucket_count())); |
+ params->SetInteger("bucket_count", static_cast<int>(BucketCount())); |
} |
void Histogram::GetCountAndBucketData(Count* count, |
@@ -494,12 +491,12 @@ void Histogram::GetCountAndBucketData(Count* count, |
*count = snapshot->TotalCount(); |
*sum = snapshot->sum(); |
size_t index = 0; |
- for (size_t i = 0; i < bucket_count(); ++i) { |
+ for (size_t i = 0; i < BucketCount(); ++i) { |
Sample count = snapshot->GetCountAtIndex(i); |
if (count > 0) { |
scoped_ptr<DictionaryValue> bucket_value(new DictionaryValue()); |
bucket_value->SetInteger("low", ranges(i)); |
- if (i != bucket_count() - 1) |
+ if (i != BucketCount() - 1) |
bucket_value->SetInteger("high", ranges(i + 1)); |
bucket_value->SetInteger("count", count); |
buckets->Set(index, bucket_value.release()); |
@@ -548,13 +545,12 @@ HistogramBase* LinearHistogram::FactoryGetWithRangeDescription( |
if (!histogram) { |
// To avoid racy destruction at shutdown, the following will be leaked. |
BucketRanges* ranges = new BucketRanges(bucket_count + 1); |
- InitializeBucketRanges(minimum, maximum, bucket_count, ranges); |
+ InitializeBucketRanges(minimum, maximum, ranges); |
const BucketRanges* registered_ranges = |
StatisticsRecorder::RegisterOrDeleteDuplicateRanges(ranges); |
LinearHistogram* tentative_histogram = |
- new LinearHistogram(name, minimum, maximum, bucket_count, |
- registered_ranges); |
+ new LinearHistogram(name, minimum, maximum, registered_ranges); |
// Set range descriptions. |
if (descriptions) { |
@@ -581,9 +577,8 @@ HistogramType LinearHistogram::GetHistogramType() const { |
LinearHistogram::LinearHistogram(const string& name, |
Sample minimum, |
Sample maximum, |
- size_t bucket_count, |
const BucketRanges* ranges) |
- : Histogram(name, minimum, maximum, bucket_count, ranges) { |
+ : Histogram(name, minimum, maximum, ranges) { |
} |
double LinearHistogram::GetBucketSize(Count current, size_t i) const { |
@@ -609,18 +604,16 @@ bool LinearHistogram::PrintEmptyBucket(size_t index) const { |
// static |
void LinearHistogram::InitializeBucketRanges(Sample minimum, |
Sample maximum, |
- size_t bucket_count, |
BucketRanges* ranges) { |
- DCHECK_EQ(ranges->size(), bucket_count + 1); |
double min = minimum; |
double max = maximum; |
- size_t i; |
- for (i = 1; i < bucket_count; ++i) { |
+ size_t bucket_count = ranges->BucketCount(); |
+ for (size_t i = 1; i < bucket_count; ++i) { |
double linear_range = |
- (min * (bucket_count -1 - i) + max * (i - 1)) / (bucket_count - 2); |
+ (min * (bucket_count - 1 - i) + max * (i - 1)) / (bucket_count - 2); |
ranges->set_range(i, static_cast<Sample>(linear_range + 0.5)); |
} |
- ranges->set_range(ranges->size() - 1, HistogramBase::kSampleType_MAX); |
+ ranges->set_range(ranges->BucketCount(), HistogramBase::kSampleType_MAX); |
ranges->ResetChecksum(); |
} |
@@ -656,7 +649,7 @@ HistogramBase* BooleanHistogram::FactoryGet(const string& name, int32 flags) { |
if (!histogram) { |
// To avoid racy destruction at shutdown, the following will be leaked. |
BucketRanges* ranges = new BucketRanges(4); |
- LinearHistogram::InitializeBucketRanges(1, 2, 3, ranges); |
+ LinearHistogram::InitializeBucketRanges(1, 2, ranges); |
const BucketRanges* registered_ranges = |
StatisticsRecorder::RegisterOrDeleteDuplicateRanges(ranges); |
@@ -678,7 +671,7 @@ HistogramType BooleanHistogram::GetHistogramType() const { |
BooleanHistogram::BooleanHistogram(const string& name, |
const BucketRanges* ranges) |
- : LinearHistogram(name, 1, 2, 3, ranges) {} |
+ : LinearHistogram(name, 1, 2, ranges) {} |
HistogramBase* BooleanHistogram::DeserializeInfoImpl(PickleIterator* iter) { |
string histogram_name; |
@@ -754,8 +747,7 @@ CustomHistogram::CustomHistogram(const string& name, |
const BucketRanges* ranges) |
: Histogram(name, |
ranges->range(1), |
- ranges->range(ranges->size() - 2), |
- ranges->size() - 1, |
+ ranges->range(ranges->BucketCount() - 1), |
ranges) {} |
bool CustomHistogram::SerializeInfoImpl(Pickle* pickle) const { |
@@ -764,7 +756,7 @@ bool CustomHistogram::SerializeInfoImpl(Pickle* pickle) const { |
// Serialize ranges. First and last ranges are alwasy 0 and INT_MAX, so don't |
// write them. |
- for (size_t i = 1; i < bucket_ranges()->size() - 1; ++i) { |
+ for (size_t i = 1; i < bucket_ranges()->BucketCount(); ++i) { |
if (!pickle->WriteInt(bucket_ranges()->range(i))) |
return false; |
} |