The following are programs we've used to compare the Boost Serialization and Ebenezer Enterprises approaches. This set of programs serialize/send a list of ints.

  Boost version
  Ebenezer version
  Generated code included by Ebenezer version

In tests on Linux 2.6.15 using gcc version 4.0.3 with -O3 optimization, the Boost version (using Boost 1.34.1) is 3 times slower than the Ebenezer version and the stripped Boost executable is more than twice as large as the stripped Ebenezer executable. The Boost executable is 6 times slower than the Ebenezer executable when no optimization flags are used.

The following programs send a list of ints and a deque of ints.

  Boost version
  Ebenezer version

Using the same environment described above (with -O3), the Boost version is 2.1 times slower than the Ebenezer version and the stripped Boost executable is more than twice as large as the stripped Ebenezer executable. The Boost executable is 6 times slower than the Ebenezer executable without optimization flags.

Tests on Windows XP using MSVC8.0 yield similar results to the Linux tests. The Boost versions of both of the above tests are 2.4 times slower than the corresponding Ebenezer version when -O2 optimization is used. When no optimization flags are used the Boost versions are more than 5 times slower than the Ebenezer versions.

A few have asked for some interpretation of the results. To our knowledge no C++ compiler has a switch to output the code they generate based on a template library like Boost Serialization. Without this transparency, it is difficult to know if the relatively poor performance of the Boost approach is due to the library or the compilers. One way or another though, these tests reveal how poorly clothed the emperor is. Either two widely used C++ compilers generate low quality code in simple tests or the Boost community, with all of it's resources, has not been able to build an efficient marshalling library.

We're interested in hearing how the approaches stack up when using other compilers or operating systems. Do we have any strong competition?

This page should be extended to other topics including differences related to version support.