Upload all values instead of only mean and err into histograms

Bug: None
Change-Id: I3c4778bcc8170f5de11b61173dfebbdb5fd9b462
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/208287
Reviewed-by: Andrey Logvin <landrey@webrtc.org>
Commit-Queue: Artem Titov <titovartem@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#33311}
This commit is contained in:
Artem Titov 2021-02-20 01:31:37 +01:00 committed by Commit Bot
parent 3d37e06fed
commit bc9dc5a0b0
2 changed files with 45 additions and 2 deletions

View File

@ -42,6 +42,19 @@ std::string UnitWithDirection(
} }
} }
std::vector<SamplesStatsCounter::StatsSample> GetSortedSamples(
const SamplesStatsCounter& counter) {
rtc::ArrayView<const SamplesStatsCounter::StatsSample> view =
counter.GetTimedSamples();
std::vector<SamplesStatsCounter::StatsSample> out(view.begin(), view.end());
std::sort(out.begin(), out.end(),
[](const SamplesStatsCounter::StatsSample& a,
const SamplesStatsCounter::StatsSample& b) {
return a.time < b.time;
});
return out;
}
template <typename Container> template <typename Container>
void OutputListToStream(std::ostream* ostream, const Container& values) { void OutputListToStream(std::ostream* ostream, const Container& values) {
const char* sep = ""; const char* sep = "";
@ -278,8 +291,19 @@ void PrintResult(absl::string_view measurement,
double mean = counter.IsEmpty() ? 0 : counter.GetAverage(); double mean = counter.IsEmpty() ? 0 : counter.GetAverage();
double error = counter.IsEmpty() ? 0 : counter.GetStandardDeviation(); double error = counter.IsEmpty() ? 0 : counter.GetStandardDeviation();
PrintResultMeanAndError(measurement, modifier, trace, mean, error, units,
important, improve_direction); std::vector<SamplesStatsCounter::StatsSample> timed_samples =
GetSortedSamples(counter);
std::vector<double> samples(timed_samples.size());
for (size_t i = 0; i < timed_samples.size(); ++i) {
samples[i] = timed_samples[i].value;
}
GetPerfWriter().LogResultList(graph_name.str(), trace, samples, units,
important, improve_direction);
GetResultsLinePrinter().PrintResultMeanAndError(graph_name.str(), trace, mean,
error, units, important,
improve_direction);
} }
void PrintResultMeanAndError(absl::string_view measurement, void PrintResultMeanAndError(absl::string_view measurement,

View File

@ -34,6 +34,25 @@ TEST(PerfHistogramWriterUnittest, TestSimpleHistogram) {
ASSERT_EQ(histogram_set.histograms_size(), 1); ASSERT_EQ(histogram_set.histograms_size(), 1);
} }
TEST(PerfHistogramWriterUnittest, TestListOfValuesHistogram) {
std::unique_ptr<PerfTestResultWriter> writer =
std::unique_ptr<PerfTestResultWriter>(CreateHistogramWriter());
std::vector<double> samples{0, 1, 2};
writer->LogResultList("-", "-", samples, "ms", false,
ImproveDirection::kNone);
proto::HistogramSet histogram_set;
EXPECT_TRUE(histogram_set.ParseFromString(writer->Serialize()))
<< "Expected valid histogram set";
ASSERT_EQ(histogram_set.histograms_size(), 1);
ASSERT_EQ(histogram_set.histograms(0).sample_values_size(), 3);
EXPECT_EQ(histogram_set.histograms(0).sample_values(0), 0);
EXPECT_EQ(histogram_set.histograms(0).sample_values(1), 1);
EXPECT_EQ(histogram_set.histograms(0).sample_values(2), 2);
}
TEST(PerfHistogramWriterUnittest, WritesSamplesAndUserStory) { TEST(PerfHistogramWriterUnittest, WritesSamplesAndUserStory) {
std::unique_ptr<PerfTestResultWriter> writer = std::unique_ptr<PerfTestResultWriter> writer =
std::unique_ptr<PerfTestResultWriter>(CreateHistogramWriter()); std::unique_ptr<PerfTestResultWriter>(CreateHistogramWriter());