فهرست منبع

common/hex_util: Reserve std::string memory ahead of time

Avoids potentially performing multiple reallocations (depending on the
size of the input data) by reserving the necessary amount of memory
ahead of time.

This is trivially doable, so there's no harm in it.
Lioncash 7 سال پیش
والد
کامیت
969cd6dc1d
1فایلهای تغییر یافته به همراه5 افزوده شده و 0 حذف شده
  1. 5 0
      src/common/hex_util.h

+ 5 - 0
src/common/hex_util.h

@@ -36,10 +36,15 @@ std::string HexToString(const ContiguousContainer& data, bool upper = true) {
     static_assert(std::is_same_v<typename ContiguousContainer::value_type, u8>,
                   "Underlying type within the contiguous container must be u8.");
 
+    constexpr std::size_t pad_width = 2;
+
     std::string out;
+    out.reserve(std::size(data) * pad_width);
+
     for (const u8 c : data) {
         out += fmt::format(upper ? "{:02X}" : "{:02x}", c);
     }
+
     return out;
 }