StatusVector: Prereserve arrays for better performance
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user