[libc] Refresh benchmark progress bar when needed.
NOKEYCHECK=True
GitOrigin-RevId: ab577807165c45abfbadc117125ec7275cdcc0cf
diff --git a/benchmarks/LibcMemoryBenchmarkMain.cpp b/benchmarks/LibcMemoryBenchmarkMain.cpp
index 99c5879..770336e 100644
--- a/benchmarks/LibcMemoryBenchmarkMain.cpp
+++ b/benchmarks/LibcMemoryBenchmarkMain.cpp
@@ -262,17 +262,21 @@
};
}
- void reportProgress(BenchmarkStatus BS) {
+ void reportProgress() {
+ static size_t LastPercent = -1;
const size_t TotalSteps = Study.Measurements.capacity();
const size_t Steps = Study.Measurements.size();
const size_t Percent = 100 * Steps / TotalSteps;
+ if (Percent == LastPercent)
+ return;
+ LastPercent = Percent;
size_t I = 0;
errs() << '[';
for (; I <= Percent; ++I)
errs() << '#';
for (; I <= 100; ++I)
errs() << '_';
- errs() << "] " << Percent << "%\r";
+ errs() << "] " << Percent << '%' << '\r';
}
void runTrials(const BenchmarkOptions &Options,
@@ -283,7 +287,7 @@
for (size_t i = 0; i < NumTrials; ++i) {
const BenchmarkResult Result = benchmark(Options, B, B.functor());
Study.Measurements.push_back(Result.BestGuess);
- reportProgress(Result.TerminationStatus);
+ reportProgress();
}
}
@@ -330,6 +334,7 @@
.concat(Output));
json::OStream JOS(FOS);
serializeToJson(S, JOS);
+ FOS << "\n";
}
void main() {