FuelBanchmarks

Fuel also has a benchmark suite. Since StOMP does not support platform-specific objects like BlockClosure, CompiledMethods, etc., we were not able to run all benchmarks. Basic samples were tested as below:

bench := FLBenchmarks new 

samples: (FLBenchmarkSample basicSamples);

runners: {FLStompBenchmarkRunner new. FLFuelBenchmarkRunner new};

useMemoryStream;

yourself.

bench run.

On Pharo 1.2.1:

FuelBench

Serializes: StOMP and Fuel 1.4.

OS: Windows 7 professional 32bit, CPU: Core i5 M560, RAM: 4GB 

Stomp Serialization sample: completeBinaryTree size: 1 ms: 6104

Stomp Materialization sample: completeBinaryTree size: 1 ms: 5975

Stomp Serialization sample: strings size: 65536 ms: 320

Stomp Materialization sample: strings size: 65536 ms: 383

Stomp Serialization sample: smallIntegers size: 131072 ms: 802

Stomp Materialization sample: smallIntegers size: 131072 ms: 465

Stomp Serialization sample: floats size: 65536 ms: 565

Stomp Materialization sample: floats size: 65536 ms: 397

Stomp Serialization sample: pairs size: 32768 ms: 1190

Stomp Materialization sample: pairs size: 32768 ms: 959

Stomp Serialization sample: points size: 32768 ms: 907

Stomp Materialization sample: points size: 32768 ms: 664

Stomp Serialization sample: rectangles size: 16384 ms: 585

Stomp Materialization sample: rectangles size: 16384 ms: 415

Stomp Serialization sample: byteArrays size: 65536 ms: 997

Stomp Materialization sample: byteArrays size: 65536 ms: 445

Stomp Serialization sample: wideStrings size: 1000 ms: 2116

Stomp Materialization sample: wideStrings size: 1000 ms: 5397

Fuel Serialization sample: completeBinaryTree size: 1 ms: 10538

Fuel Materialization sample: completeBinaryTree size: 1 ms: 890

Fuel Serialization sample: strings size: 65536 ms: 1831

Fuel Materialization sample: strings size: 65536 ms: 192

Fuel Serialization sample: smallIntegers size: 131072 ms: 5609

Fuel Materialization sample: smallIntegers size: 131072 ms: 311

Fuel Serialization sample: floats size: 65536 ms: 1875

Fuel Materialization sample: floats size: 65536 ms: 277

Fuel Serialization sample: pairs size: 32768 ms: 2407

Fuel Materialization sample: pairs size: 32768 ms: 218

Fuel Serialization sample: points size: 32768 ms: 2060

Fuel Materialization sample: points size: 32768 ms: 177

Fuel Serialization sample: rectangles size: 16384 ms: 3433

Fuel Materialization sample: rectangles size: 16384 ms: 278

Fuel Serialization sample: byteArrays size: 65536 ms: 1888

Fuel Materialization sample: byteArrays size: 65536 ms: 198

Fuel Serialization sample: wideStrings size: 1000 ms: 2944

Fuel Materialization sample: wideStrings size: 1000 ms: 119

As you can see, Fuel's materialization(deserialization) speed is superb. Fuel uses an optimized  format for speeding up deserialization. On the other hand, StOMP materialization speed is high because it uses simple one-pass recursion.  

There is no one-size-fit-all serializer. If your application often read big object data, I can recommend Fuel. If you are conscious about interoperability, and your application reads/writes small/medium sized objects frequently, StOMP can be used.