Skip to content

Commit 4cce5f4

Browse files
authored
Perf: Optimize function append in include/fmt/base.h (#4541)
1 parent aa8a308 commit 4cce5f4

1 file changed

Lines changed: 6 additions & 3 deletions

File tree

include/fmt/base.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1844,10 +1844,13 @@ template <typename T> class buffer {
18441844
void
18451845
append(const U* begin, const U* end) {
18461846
while (begin != end) {
1847-
auto count = to_unsigned(end - begin);
1848-
try_reserve(size_ + count);
18491847
auto free_cap = capacity_ - size_;
1850-
if (free_cap < count) count = free_cap;
1848+
auto count = to_unsigned(end - begin);
1849+
if (free_cap < count) {
1850+
grow_(*this, size_ + count);
1851+
free_cap = capacity_ - size_;
1852+
count = (count < free_cap) ? count : free_cap;
1853+
}
18511854
// A loop is faster than memcpy on small sizes.
18521855
T* out = ptr_ + size_;
18531856
for (size_t i = 0; i < count; ++i) out[i] = begin[i];

0 commit comments

Comments
 (0)