Still, we construct an std::tuple for every single struct or class we serialize. While this construction is convenient, it might be unnecessary. A sufficiently advanced compiler can probably lift the overhead, but it might be better if we could get rid of this intermediate construction.
The
struct_to_tuple
function builds, at runtime, what is effectively a copy of any struct, but organized as a tuple.So if you have...
Then it will construct (at runtime), something like this...
That's at runtime, so it is not at all free.
You can help things a little bit by casting to references so that you have...
In at least one benchmark, just replacing the copies by reference made a large difference (see https://github.com/simdjson/experimental_json_builder/pull/14).
Still, we construct an
std::tuple
for every singlestruct
orclass
we serialize. While this construction is convenient, it might be unnecessary. A sufficiently advanced compiler can probably lift the overhead, but it might be better if we could get rid of this intermediate construction.