On 27 Aug 2010, at 22:26, Robert Ramey wrote:
David Abrahams wrote:
b) user experience seems to show that archive construction/destruction is a significant performance issue when a new archive is made for each data transmission. On the other hand, one has to do this since the current archive implemenation track addresses of serialized obects so the same archive can't be use send the same structure (maybe with changed data) multiple times.
I can't understand how you reach that conclusion. In my long explanation I thought I made it clear that Boost.MPI and its database get a great deal of its performance advantage from exactly that: sending the same structure multiple times with the same MPI type map.
hmm - what about tracked objects? I suggested turning off tracking and Matthias told me that it was needed to send pointers. But for this to work an archive has to be reconstructed everytime to re-initialize the tracking lists. I don't want to spend a lot of time on this as that means I have to delve into the MPI serialization and I don't want to do this.
The typical use case is that the pointer structure is built once, and then only the values of arrays and other data members needs to be updated by communication. The "skeleton" creates all the objects and sets the pointers, and is sent only once, and thereafter only the "contents" is transmitted. Matthias