Improve 32-bit integer formatting performance by parameterizing Forma… · fmtlib/fmt@3017fc6
@@ -169,29 +169,6 @@ typename fmt::BasicWriter<Char>::CharPtr
169169return content;
170170}
171171172-template <typename Char>
173-void fmt::internal::FormatDecimal(
174- Char *buffer, uint64_t value, unsigned num_digits) {
175- --num_digits;
176-while (value >= 100) {
177-// Integer division is slow so do it for a group of two digits instead
178-// of for every digit. The idea comes from the talk by Alexandrescu
179-// "Three Optimization Tips for C++". See speed-test for a comparison.
180-unsigned index = (value % 100) * 2;
181- value /= 100;
182- buffer[num_digits] = internal::DIGITS[index + 1];
183- buffer[num_digits - 1] = internal::DIGITS[index];
184- num_digits -= 2;
185- }
186-if (value < 10) {
187- *buffer = static_cast<char>('0' + value);
188-return;
189- }
190-unsigned index = static_cast<unsigned>(value * 2);
191- buffer[1] = internal::DIGITS[index + 1];
192- buffer[0] = internal::DIGITS[index];
193-}
194-195172template <typename Char>
196173typename fmt::BasicWriter<Char>::CharPtr
197174 fmt::BasicWriter<Char>::PrepareFilledBuffer(
@@ -700,9 +677,6 @@ template fmt::BasicWriter<char>::CharPtr
700677 fmt::BasicWriter<char>::FillPadding(CharPtr buffer,
701678unsigned total_size, std::size_t content_size, wchar_t fill);
702679703-template void fmt::internal::FormatDecimal<char>(
704-char *buffer, uint64_t value, unsigned num_digits);
705-706680template fmt::BasicWriter<char>::CharPtr
707681 fmt::BasicWriter<char>::PrepareFilledBuffer(
708682unsigned size, const AlignSpec &spec, char sign);
@@ -732,9 +706,6 @@ template fmt::BasicWriter<wchar_t>::CharPtr
732706 fmt::BasicWriter<wchar_t>::FillPadding(CharPtr buffer,
733707unsigned total_size, std::size_t content_size, wchar_t fill);
734708735-template void fmt::internal::FormatDecimal<wchar_t>(
736-wchar_t *buffer, uint64_t value, unsigned num_digits);
737-738709template fmt::BasicWriter<wchar_t>::CharPtr
739710 fmt::BasicWriter<wchar_t>::PrepareFilledBuffer(
740711unsigned size, const AlignSpec &spec, char sign);