Use swap instead of copy in RtcHistogram::GetAndReset.
BUG=webrtc:5283 Review-Url: https://codereview.webrtc.org/2268323002 Cr-Commit-Position: refs/heads/master@{#15311}
This commit is contained in:
parent
84e56d5768
commit
1731c9cb4c
@ -9,6 +9,8 @@
|
||||
|
||||
#include "webrtc/system_wrappers/include/metrics_default.h"
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "webrtc/base/criticalsection.h"
|
||||
#include "webrtc/base/thread_annotations.h"
|
||||
#include "webrtc/system_wrappers/include/metrics.h"
|
||||
@ -34,10 +36,8 @@ class RtcHistogram {
|
||||
}
|
||||
|
||||
void Add(int sample) {
|
||||
if (sample < min_)
|
||||
sample = min_ - 1; // Underflow bucket.
|
||||
if (sample > max_)
|
||||
sample = max_;
|
||||
sample = std::min(sample, max_);
|
||||
sample = std::max(sample, min_ - 1); // Underflow bucket.
|
||||
|
||||
rtc::CritScope cs(&crit_);
|
||||
if (info_.samples.size() == kMaxSampleMapSize &&
|
||||
@ -55,8 +55,9 @@ class RtcHistogram {
|
||||
|
||||
SampleInfo* copy =
|
||||
new SampleInfo(info_.name, info_.min, info_.max, info_.bucket_count);
|
||||
copy->samples = info_.samples;
|
||||
info_.samples.clear();
|
||||
|
||||
std::swap(info_.samples, copy->samples);
|
||||
|
||||
return std::unique_ptr<SampleInfo>(copy);
|
||||
}
|
||||
|
||||
|
||||
@ -134,6 +134,16 @@ TEST_F(MetricsDefaultTest, GetAndReset) {
|
||||
EXPECT_EQ(1, NumEvents("Histogram1", 4, histograms));
|
||||
EXPECT_EQ(2, NumEvents("Histogram1", 5, histograms));
|
||||
EXPECT_EQ(1, NumEvents("Histogram2", 10, histograms));
|
||||
|
||||
// Add samples after reset.
|
||||
metrics::GetAndReset(&histograms);
|
||||
EXPECT_EQ(0u, histograms.size());
|
||||
RTC_HISTOGRAM_PERCENTAGE("Histogram1", 50);
|
||||
RTC_HISTOGRAM_PERCENTAGE("Histogram2", 8);
|
||||
EXPECT_EQ(1, metrics::NumSamples("Histogram1"));
|
||||
EXPECT_EQ(1, metrics::NumSamples("Histogram2"));
|
||||
EXPECT_EQ(1, metrics::NumEvents("Histogram1", 50));
|
||||
EXPECT_EQ(1, metrics::NumEvents("Histogram2", 8));
|
||||
}
|
||||
|
||||
TEST_F(MetricsDefaultTest, TestMinMaxBucket) {
|
||||
|
||||
@ -58,6 +58,14 @@ TEST_F(MetricsTest, RtcHistogramEnumeration_AddSample) {
|
||||
EXPECT_EQ(1, metrics::NumEvents(kName, kSample));
|
||||
}
|
||||
|
||||
TEST_F(MetricsTest, RtcHistogramBoolean_AddSample) {
|
||||
const std::string kName = "Boolean";
|
||||
const int kSample = 0;
|
||||
RTC_HISTOGRAM_BOOLEAN(kName, kSample);
|
||||
EXPECT_EQ(1, metrics::NumSamples(kName));
|
||||
EXPECT_EQ(1, metrics::NumEvents(kName, kSample));
|
||||
}
|
||||
|
||||
TEST_F(MetricsTest, RtcHistogramCountsSparse_AddSample) {
|
||||
const std::string kName = "CountsSparse100";
|
||||
RTC_HISTOGRAM_COUNTS_SPARSE_100(kName, kSample);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user