Vladimir Ozerov created IGNITE-1550:
---------------------------------------

             Summary: Optimize "direct" message serialization.
                 Key: IGNITE-1550
                 URL: https://issues.apache.org/jira/browse/IGNITE-1550
             Project: Ignite
          Issue Type: Task
          Components: general
    Affects Versions: 1.1.4
            Reporter: Vladimir Ozerov
            Priority: Critical
             Fix For: ignite-1.5


*Overview*
Ignite use "direct" serialization to speed up marshalling of internal classes 
avoiding byte array copying.
This mechanism can be improved significantly on class-by-class basis reducing 
message size by 10-30% in different cases.

*Implementation*
1) Definte the list of possible optimizations. At the very least it includes:
- Var-length integer encoding; 
- Special cases (constants, positive-only values, low amount of significant 
bits, etc.);
- Efficient writes of "nulls";
- Write groups of relates fields with boolean switch if they are either null or 
not-null at the same time.

2) Determine what to optimize. This can be done on class-by-class basis for 
each of ~180 messages. Better approach will be to enable tracking of written 
values inside DirectMessageWriter. Then we should run Ignite with differnet 
payloads and identify fields which are good candidates for optimization.

3) Implement each optimziation.

*Risks*
Backward compatibility will be broken. We must either inform users about it, or 
support ability to use old non-optimized protocol version somehow.





--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to