StatusVector: Prereserve arrays for better performance

This commit is contained in:
2026-02-28 13:05:56 +01:00
parent b00ff5c9c1
commit b179ac0d81
3 changed files with 48 additions and 36 deletions
+9 -3
View File
@@ -4,9 +4,11 @@
#include "StatusVector.h"
void StatusVector::Clear() {
void StatusVector::Clear(size_t reserve) {
std::unique_lock ul(m);
content.clear();
if (reserve > 0)
content.reserve(reserve);
mean = NAN;
count = 0;
@@ -187,15 +189,19 @@ MultiLinePlot StatusVector::GetMaxPlot(int64_t bin_size, float x_start, float x_
return ret;
}
void StatusMultiVector::Clear() {
void StatusMultiVector::Clear(size_t reserve) {
std::unique_lock ul(m);
if (reserve > 0)
r = reserve;
status.clear();
}
void StatusMultiVector::AddElement(const std::string &s, uint32_t id, float val) {
std::unique_lock ul(m);
if (!status.contains(s))
if (!status.contains(s)) {
status[s] = std::make_unique<StatusVector>();
status[s]->Clear(r);
}
status[s]->AddElement(id, val);
}