Request
Currently clp_s::timestamp_parser is slower at marshalling certain kinds of timestamp formats than the older clp_s::TimestampPattern, which can lead to slower overall decompression speeds as shown in #1788.
After some profiling, this slowdown seems to mostly come from calls to fmt::format for marshalling zero and space-padded integer fields (judging by the profiling results, most of the time is spent dynamically parsing format strings).
Possible implementation
Replace all or the majority of the fmt::format calls in the marshalling path for clp_s::timestamp_parser with calls to an optimized function which appends padded integers to a buffer, similar to what we do in the old clp_s::TimestampPattern marshalling code.
Request
Currently
clp_s::timestamp_parseris slower at marshalling certain kinds of timestamp formats than the olderclp_s::TimestampPattern, which can lead to slower overall decompression speeds as shown in #1788.After some profiling, this slowdown seems to mostly come from calls to
fmt::formatfor marshalling zero and space-padded integer fields (judging by the profiling results, most of the time is spent dynamically parsing format strings).Possible implementation
Replace all or the majority of the
fmt::formatcalls in the marshalling path forclp_s::timestamp_parserwith calls to an optimized function which appends padded integers to a buffer, similar to what we do in the oldclp_s::TimestampPatternmarshalling code.