Zapalniki,

Inspired by IGNITE-4669 (.NET: Sort binary object fields) [1].

Currently we sort binary object fields before when writing them to the
output stream in case of standard (Serializable) objects and
BinaryObjectBuilder. This makes sense as we have stable binary object
representation irrespective of fields order, which is very important e.g.
for DML. And it works fine from performance perspective as well:
- For standard classes we sort fields only once during initialization;
- For builder we have to maintain the whole object graph in memory before
writing anyway as builder is mutable, so sorting doesn't impose serious
performance hit.

But what to do with Binarilyzable classes? We can sort their fields as
well, but it means that:
1) We will not be able to write them directly to stream. Instead, we will
accumulate values in memory, and write only when the whole object graph is
known.
2) Currently reads are mostly sequential from memory perspective. With this
change reads will become random.

So we will loose both read and write serialization performance. How do you
think - do we need this change or not?

Vladimir.

[1] https://issues.apache.org/jira/browse/IGNITE-4669

Reply via email to