Performance

Test the performance of Skaringas (de)serialization against native Java (de)serialization.

The following performance numbers where measured with the performance test suite that is distributed with Skaringa (Package com.skaringa.perftest).

We see, that for complex objects, like vectors and sets, Skaringa is as fast as native Java serialization via ObjectOutputStream.writeObject() respectively ObjectInputStream.readObject(). Only for simple Java types, like arrays of int, native Java serialization outperforms Skaringa.

Sequential Tests

The tests were executed in sequential order.

Test Setup

Testclass: com.skaringa.perftest.SkaringaPerfTest
Parallel: false
Date: 2008-05-08T19:47:57+02:00
Hardware: Dual 2.66 GHz Intel Core2, 3 GByte RAM
OS: Windows XP 5.1 / x86
JVM: 1.5.0_11 Sun Microsystems Inc.
SAX Parser: com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl
Transformer: com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl

Test results

Lesser time values mean better performance!

Method Data type Data size [elements] Random data Average time per test [ms]
SerializeSkaringa com.skaringa.javaxml.test.IntVectorObj 10000 false 28.0
SerializeJava com.skaringa.javaxml.test.IntVectorObj 10000 false 65.0
DeserializeSkaringa com.skaringa.javaxml.test.IntVectorObj 10000 false 89.0
DeserializeJava com.skaringa.javaxml.test.IntVectorObj 10000 false 67.0
SerializeSkaringa com.skaringa.javaxml.test.SetObj 10000 false 23.0
SerializeJava com.skaringa.javaxml.test.SetObj 10000 false 64.0
DeserializeSkaringa com.skaringa.javaxml.test.SetObj 10000 false 93.0
DeserializeJava com.skaringa.javaxml.test.SetObj 10000 false 68.0
SerializeSkaringa com.skaringa.javaxml.test.ArrayObj 10000 false 25.0
SerializeJava com.skaringa.javaxml.test.ArrayObj 10000 false 1.0
DeserializeSkaringa com.skaringa.javaxml.test.ArrayObj 10000 false 78.0
DeserializeJava com.skaringa.javaxml.test.ArrayObj 10000 false 0.0

Parallel Tests

The tests were executed at the same time in parallel threads.

Test Setup

Testclass: com.skaringa.perftest.SkaringaPerfTest
Parallel: true
Date: 2008-05-08T19:53:02+02:00
Hardware: Dual 2.66 GHz Intel Core2, 3 GByte RAM
OS: Windows XP 5.1 / x86
JVM: 1.5.0_11 Sun Microsystems Inc.
SAX Parser: com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl
Transformer: com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl

Test results

Lesser time values mean better performance!

Method Data type Data size [elements] Random data Average time per test [ms]
SerializeSkaringa com.skaringa.javaxml.test.IntVectorObj 10000 false 51.0
SerializeJava com.skaringa.javaxml.test.IntVectorObj 10000 false 256.0
DeserializeSkaringa com.skaringa.javaxml.test.IntVectorObj 10000 false 186.0
DeserializeJava com.skaringa.javaxml.test.IntVectorObj 10000 false 125.0
SerializeSkaringa com.skaringa.javaxml.test.SetObj 10000 false 393.0
SerializeJava com.skaringa.javaxml.test.SetObj 10000 false 303.0
DeserializeSkaringa com.skaringa.javaxml.test.SetObj 10000 false 114.0
DeserializeJava com.skaringa.javaxml.test.SetObj 10000 false 121.0
SerializeSkaringa com.skaringa.javaxml.test.ArrayObj 10000 false 375.0
SerializeJava com.skaringa.javaxml.test.ArrayObj 10000 false 1.0
DeserializeSkaringa com.skaringa.javaxml.test.ArrayObj 10000 false 103.0
DeserializeJava com.skaringa.javaxml.test.ArrayObj 10000 false 1.0