package serializers;
import serializers.avro.AvroGeneric;
import serializers.avro.AvroSpecific;
import serializers.capnproto.CapNProto;
import serializers.colfer.Colfer;
import serializers.datakernel.DataKernelSerializer;
import serializers.flatbuffers.FlatBuffers;
import serializers.jackson.*;
import serializers.javaxjson.*;
import serializers.json.*;
import serializers.kryo.Kryo;
import serializers.msgpack.MsgPack;
import serializers.protobuf.Protobuf;
import serializers.protobuf.ProtobufJson;
import serializers.protostuff.Protostuff;
import serializers.protostuff.ProtostuffJson;
import serializers.wobly.Wobly;
import serializers.xml.*;
import serializers.dslplatform.DSLPlatform;
/**
* Full test of various codecs, using a single <code>MediaItem</code>
* as test data.
*/
public class BenchmarkRunner extends MediaItemBenchmark
{
public static void main(String[] args) {
new BenchmarkRunner().runBenchmark(args);
}
protected void addTests(TestGroups groups)
{
// Binary Formats; language-specific ones
JaxbAalto.register(groups);
Jaxb.register(groups);
JavaBuiltIn.register(groups);
JavaManual.register(groups);
Stephenerialization.register(groups);
Scala.register(groups);
// hessian, kryo and wobly are Java object serializations
Hessian.register(groups);
Kryo.register(groups);
FastSerialization.register(groups);
Wobly.register(groups);
JBossSerialization.register(groups);
JBossMarshalling.register(groups);
// 06-May-2013, tatu: Fails on basic Java7, mismatch with Unsafe; commented out
// Obser.register(groups);
// Binary formats, generic: protobuf, thrift, avro, CKS, msgpack, CBOR
Protobuf.register(groups);
// 16-May-2012, Nate: As discussed on mailing list, removed ActiveMQProtobuf as
// its lazy deserialization isn't comparable to other serializers.
// ActiveMQProtobuf.register(groups);
Protostuff.register(groups);
Thrift.register(groups);
AvroSpecific.register(groups);
AvroGeneric.register(groups);
// 01-Oct-2014: MsgPack implementation uses questionable technique as well: instead of using Maps (name/value),
// uses arrays, presumes ordering (and implied schema thereby) -- not inter-operable with most non-Java MsgPack
// usage, and basically seems to optimize for benchmarks instead of reflecting real usage.
MsgPack.register(groups);
JacksonCBORDatabind.register(groups);
// JSON
JacksonJsonManual.register(groups);
JacksonJsonDatabind.register(groups);
JacksonJrDatabind.register(groups);
// 01-Oct-2014, tatu: not 100% sure this is still needed, but left just in case
// JacksonJsonTree.register(groups);
JavaxJsonTreeGlassfish.register(groups);
JavaxJsonStreamGlassfish.register(groups);
JsonTwoLattes.register(groups);
ProtostuffJson.register(groups);
ProtobufJson.register(groups);
JsonGsonManual.register(groups);
JsonGsonTree.register(groups);
JsonGsonDatabind.register(groups);
JsonSvensonDatabind.register(groups);
FlexjsonDatabind.register(groups);
JsonLibJsonDatabind.register(groups);
FastJSONDatabind.register(groups);
FastJSONArrayDatabind.register(groups);
JsonSimpleWithContentHandler.register(groups);
// JsonSimpleManualTree.register(groups);
JsonSmartManualTree.register(groups);
JsonDotOrgManualTree.register(groups);
JsonijJpath.register(groups);
// JsonijManualTree.register(groups);
JsonArgoTree.register(groups);
// 06-May-2013, tatu: Too slow (100x above fastest)
// JsonPathDeserializerOnly.register(groups);
// Then JSON-like binary variants
// Smile is 1-to-1 binary JSON serialization
JacksonSmileManual.register(groups);
JacksonSmileDatabind.register(groups);
// 06-May-2013, tatu: Unfortunately there is a version conflict
// here too -- commenting out, to let David fix it
// ProtostuffSmile.register(groups);
// BSON is JSON-like format with extended datatypes
JacksonBsonDatabind.register(groups);
MongoDB.register(groups);
// YAML (using Jackson module built on SnakeYAML)
JacksonYAMLDatabind.register(groups);
// XML-based formats; first textual XML
XmlStax.register(groups, true, true, false); // woodstox/aalto/-
XmlXStream.register(groups);
JacksonXmlDatabind.register(groups);
XmlJavolution.register(groups);
// Then binary XML; Fast Infoset, EXI
XmlStax.register(groups, false, false, true); // -/-/fast-infoset
ExiExificient.register(groups);
// Other things...
// Jackson databind with Afterburner; add-on module that uses bytecode gen for speed
JacksonWithAfterburner.registerAll(groups);
// Jackson's column-oriented variants for formats that usually use key/value notation
JacksonWithColumnsDatabind.registerAll(groups);
DSLPlatform.register(groups);
FlatBuffers.register(groups);
CapNProto.register(groups);
Colfer.register(groups);
DataKernelSerializer.register(groups);
}
}