
Wow - that is very interesting information for me. It turns out that 1.33.x does not use strmp for this purpose so maybe it will be faster. This kind of result is very much in line with my experience with profilers. It almost happens that the bottlenecks turn out to be in the last place I would have looked !!! So I am anxious to get at least the gcc profiler working for some serialization performance tests. Thanks for this very useful information. Robert Ramey Martin Slater wrote:
I've written a test program to compare the time required by boost serialization to the time required by using stream i/o to do a similar operation. I've only used VC 7.1 (release mode) and my focus has been to try to determine how much overhead the serialization system adds compared to the alternative of not using it. The test consists for saving/loading 1000 instances of a class which includes all primitive types (? about 20 members including strings). Times are calculated by dividing the total time by 1000 to give ms / operaton.
These preliminary results don't raise any major red flags.
Just to reiterate my experience of profiling boost::serialization loading under vtune (I cannot recommend this enough for serious performance analysis) using one of our real data files for testing (weighs in at > 100mb and thousands of individual instances of objects) that the major bottleneck was strcmp caused by the type_id compare looking up the per type information used for tracking and the such. This outweighed everything else by a wide margin. I can dig up the details if your interested and up some point I will need to look at this again and try and optimise it. This was using 1.32.0 so take the above with a grain of salt *if* this area has changed significantly.
Martin