Optimize string creation

pull/2907/head
Massimiliano Riva 1 year ago
parent be7edb56bf
commit bed0cf9d04

@ -877,16 +877,24 @@ public:
void format(const details::log_msg &, const std::tm &, memory_buf_t &dest) override { void format(const details::log_msg &, const std::tm &, memory_buf_t &dest) override {
auto mdc_map = mdc::get_context(); auto mdc_map = mdc::get_context();
if (!mdc_map.empty()) { if (!mdc_map.empty()) {
auto last_element = *(--mdc_map.end()); auto last_element = --mdc_map.end();
for (const auto &pair : mdc_map) { for (auto it = mdc_map.begin(); it != mdc_map.end(); ++it) {
std::string mdc_content_; auto &pair = *it;
if (pair != last_element) { const auto &key = pair.first;
mdc_content_ = pair.first + ':' + pair.second + ' '; const auto &value = pair.second;
} else { size_t content_size = key.size() + value.size() + 1; // 1 for ':'
mdc_content_ = pair.first + ':' + pair.second;
if (it != last_element) {
content_size++; // 1 for ' '
}
ScopedPadder p(content_size, padinfo_, dest);
fmt_helper::append_string_view(key, dest);
fmt_helper::append_string_view(":", dest);
fmt_helper::append_string_view(value, dest);
if (it != last_element) {
fmt_helper::append_string_view(" ", dest);
} }
ScopedPadder p(mdc_content_.size(), padinfo_, dest);
fmt_helper::append_string_view(mdc_content_, dest);
} }
} }
} }

Loading…
Cancel
Save