Excellent points, and does not seem hard to do. On Fri, Sep 25, 2015 at 7:06 AM, Vladimir Ozerov <voze...@gridgain.com> wrote:
> Igniters, > > Several observations on our "direct" message writes: > > 1) For some reason we write null arrays, maps and ints as "-1" integer, > while it can be encoded in a single byte. And our cache messages have > looooots of containers, which are commonly null. > > 2) Some frequently used data types could benefit significantly if integers > are written in compacted form, while others could not. Several examples: > > GridCacheVersion: > topVer - fits in 2 bytes instead of 4; > nodeOrderDrId - 1 instead of 4; > globalTime - 6 instead of 8; > order - 6 instead of 8. > Result: shrunk from 24 to 15 bytes with minimal overhead. > > AffinityTopologyVersion: > topVer - 1-2 bytes instead of 8. > minorTopVer - 1 byte instead of 4; > Result: shrunked from 12 to 2-3 bytes in 99% cases. > > IgniteUuid - takes 24 bytes, but can be shrunk only to 22 bytes => bad > candidate for optimziation. > > I picked random test and set breakpoint into random cache message - > GridDhtTxPrepareRequest. It was 444 bytes long with a single int-int pair > as a payload. At least 90 bytes (~20%) could be saved easily with described > optimziations. > > Looks like we should pay more attention to it. > > Vladimir. >