You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladimir Ozerov (JIRA)" <ji...@apache.org> on 2016/11/30 10:46:58 UTC

[jira] [Updated] (IGNITE-1550) Optimize "direct" message serialization.

     [ https://issues.apache.org/jira/browse/IGNITE-1550?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Vladimir Ozerov updated IGNITE-1550:
------------------------------------
    Priority: Minor  (was: Critical)

> 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: Minor
>
> *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)