Simplify the logic of CellDataTransferBuffer::(un)pack_data().
Specifically, instead of serializing by hand with memcpy etc, use the BOOST
facilities for serialization. This works for 2 out of 3 members of this class
without problem, and the last one is easy to deal with as well.
Secondly, serialize into a gzip compressed stream to reduce the amount of data to
transfer. This reduces the size of messages significantly; for example, in the
last cycle of step-40, we get the following data -- old packet size on the left,
new (compressed) data size on the right:
6400 1694
8440 2200
8440 2412
6400 1925
7828 2042
6060 1589
1504 583
1504 520
6060 1849
7828 2280
6060 1947
7828 2375
1504 612
76 102
76 104
6400 2025
8440 2537
I did also try to run things with BOOST's bzip2 compressor instead of gzip,
given that bzip2 often does a better job than gzip, but apparently that
isn't the case here as I get the following:
6400 1912
8440 2381
8440 2712
6400 2230
7828 2197
1504 681
6060 2177
6060 1803
1504 556
7828 2678
6060 2285
7828 2738
1504 720
76 122
76 123
6400 2392
8440 2896
In the beginning the Universe was created. This has made a lot of
people very angry and has been widely regarded as a bad move.
Douglas Adams