-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Description
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...
struct mytype {
std::string value1;
std::string value2;
int x;
}Then it will construct (at runtime), something like this...
std::tuple<std::string,std::string,int> t;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...
std::tuple<std::string&,std::string&,int&> t;In at least one benchmark, just replacing the copies by reference made a large difference (see #14).
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.
Metadata
Metadata
Assignees
Labels
No labels