Description
There is a case when we can dramatically increase marshal/unmarshal performance:
1) Type is a structure;
2) It contains only integer/float/double primitive types with well-defined;
memory layout which is consistent with our serialization protocol;
3) We are sure that there are no gaps in it's memory layout.
4) User writes it as "marshal-aware" and fields write order is consistent with memory layout.
In this case we can copy the whole structure into our stream with a single memcpy() operation. And we can read it from the stream as easy as [pointer dereference + position shift] (provided that target is on the stack).
We should also disable handles for structs, since it does not make sense.
Attachments
Issue Links
- is blocked by
-
IGNITE-3097 .NET: Improve reflective serialization performance
- Closed
-
IGNITE-1419 .Net: Add optional "raw" flag to binary type configuration.
- Closed