├── README
├── protowar
├── .classpath
├── .pmd
├── .project
├── .settings
│ ├── .jsdtscope
│ ├── org.eclipse.jdt.core.prefs
│ ├── org.eclipse.jst.common.project.facet.core.prefs
│ ├── org.eclipse.wst.common.component
│ ├── org.eclipse.wst.common.project.facet.core.xml
│ ├── org.eclipse.wst.jsdt.ui.superType.container
│ ├── org.eclipse.wst.jsdt.ui.superType.name
│ └── org.eclipse.wst.ws.service.policy.prefs
├── WebContent
│ ├── META-INF
│ │ └── MANIFEST.MF
│ └── WEB-INF
│ │ └── web.xml
└── src
│ └── org
│ └── protowar
│ ├── ProtoServerHandler.java
│ └── ProtoWar.java
├── scala_media_container
├── .classpath
├── .project
├── .settings
│ └── org.eclipse.jdt.core.prefs
├── pom.xml
└── src
│ └── serializers
│ └── scala
│ ├── Image.scala
│ ├── Media.scala
│ ├── MediaContent.scala
│ ├── Player.scala
│ ├── Runner.scala
│ ├── SbinarySerializerSupport.scala
│ └── Size.scala
└── tpc
├── .classpath
├── .gitignore
├── .project
├── .settings
└── org.eclipse.jdt.core.prefs
├── Makefile
├── README
├── attic
├── README_old
├── run
├── run-stream
├── run-wiki
└── serializers.txt
├── data-stream
├── media.3.cks
└── media.9.cks
├── data
├── media.1.json
├── media.2.json
├── media.3.json
└── media.4.json
├── lib
├── FastInfoset-1.2.6.jar
├── aalto-xml-1.2.2.jar
├── activemq-protobuf-1.1-SNAPSHOT.jar
├── activemq-util-6.0-SNAPSHOT.jar
├── argo-2.10.jar
├── asm-4.0.jar
├── asm-commons-3.2.jar
├── avro-1.10.0.jar
├── avro-compiler-1.10.0.jar
├── avro-fastserde-0.2.4.jar
├── bson-2.7.1.jar
├── bson4jackson-2.7.0.jar
├── capnproto-runtime-0.1.1.jar
├── codemodel-2.6.jar
├── commons-beanutils-1.8.3.jar
├── commons-codec-1.3.jar
├── commons-collections-3.2.1.jar
├── commons-httpclient-3.1.jar
├── commons-lang-2.4.jar
├── commons-lang3-3.4.jar
├── commons-logging-1.1.1.jar
├── dsl-json-1.9.5.jar
├── dsl-json-java8-1.9.5.jar
├── exi-exificient-0.9.1.jar
├── extra
│ └── avro-tools-1.8.2.jar
├── ezmorph-1.0.6.jar
├── fastjson-1.2.11.jar
├── flatbuffers-java-1.9.0.jar
├── flexjson-2.1.jar
├── fst-1.42.jar
├── fury-core-0.2.0.jar
├── gson-2.8.0.jar
├── guava-19.0.jar
├── helper-all-0.2.1.jar
├── hessian-4.0.7.jar
├── jackson-all-1.9.6.jar
├── jackson-annotations-2.9.0.jar
├── jackson-core-2.9.2.jar
├── jackson-databind-2.9.2.jar
├── jackson-dataformat-avro-2.9.2.jar
├── jackson-dataformat-cbor-2.9.2.jar
├── jackson-dataformat-protobuf-2.9.2.jar
├── jackson-dataformat-smile-2.9.2.jar
├── jackson-dataformat-xml-2.9.2.jar
├── jackson-dataformat-yaml-2.9.2.jar
├── jackson-jr-objects-2.9.2.jar
├── jackson-module-afterburner-2.9.2.jar
├── jackson-module-jaxb-annotations-2.9.2.jar
├── jakarta.xml.bind-api-2.3.3.jar
├── javassist-3.27.0-GA.jar
├── javax.annotation-api-1.3.2.jar
├── javax.json-1.0-b06.jar
├── javolution-5.5.1.jar
├── jboss-marshalling-2.0.9.Final.jar
├── jboss-marshalling-river-2.0.9.Final.jar
├── jboss-marshalling-serial-2.0.9.Final.jar
├── jboss-serialization-4.2.2.GA.jar
├── jopt-simple-3.2.jar
├── json-0.19-tpc.jar
├── json-lib-2.4-jdk15.jar
├── json-smart-1.0.8.jar
├── json.org-ref-2011.06.21.jar
├── json_simple-1.1.jar
├── jsonij-0.2.7.jar
├── jsonpath-2011.06.23.jar
├── kryo-5.0.0-RC6.jar
├── libthrift-0.13.0.jar
├── log4j-1.2.17.jar
├── minlog-none-1.2.jar
├── msgpack-0.6.9.jar
├── objenesis-1.2.jar
├── obser-0.9.0-SNAPSHOT.jar
├── paranamer-1.5.jar
├── protobuf-java-3.6.1.jar
├── protostuff-api-1.5.9.jar
├── protostuff-collectionschema-1.5.9.jar
├── protostuff-compiler-1.5.9-jar-with-dependencies.jar
├── protostuff-core-1.5.9.jar
├── protostuff-json-1.5.9.jar
├── protostuff-runtime-1.5.9.jar
├── protostuff-xml-1.5.9.jar
├── reflectasm-1.05.jar
├── sbinary_2.11-0.4.3-SNAPSHOT.jar
├── scala-library-2.13.3.jar
├── scala-reflect-2.13.3.jar
├── scala-xml_2.11-1.0.2.jar
├── serializer-1.1.2.jar
├── slf4j-api-1.7.14.jar
├── slf4j-log4j12-1.7.14.jar
├── snakeyaml-1.18.jar
├── stax-api-1.0.1.jar
├── stax2-api-3.0.1.jar
├── stephenerialization-3.0.0.jar
├── svenson-1.4.0.jar
├── trove-1.0.2.jar
├── velocity-1.7-dep.jar
├── velocity-1.7.jar
├── wobly-core-1.0.jar
├── woodstox-core-5.0.3.jar
├── xpp3_min-1.1.4c.jar
└── xstream-1.3.1.jar
├── mk-js-stats
├── mk-stats.sh
├── pregen
├── media.capnp
│ └── serializers
│ │ └── capnproto
│ │ └── media
│ │ └── Mediacontent.java
├── media.colf
│ └── serializers
│ │ └── colfer
│ │ └── media
│ │ ├── Image.java
│ │ ├── Media.java
│ │ └── MediaContent.java
├── media.fbs
│ └── serializers
│ │ └── flatbuffers
│ │ └── media
│ │ ├── Image.java
│ │ ├── Media.java
│ │ ├── MediaContent.java
│ │ ├── Player.java
│ │ └── Size.java
├── media.proto
│ └── serializers
│ │ └── protobuf
│ │ └── media
│ │ └── MediaContentHolder.java
└── media.thrift
│ └── gen-javabean
│ └── serializers
│ └── thrift
│ └── media
│ ├── Image.java
│ ├── Media.java
│ ├── MediaContent.java
│ ├── Player.java
│ └── Size.java
├── run-bench.sh
├── schema
├── media.activemq.proto
├── media.avro
├── media.capnp
├── media.colf
├── media.fbs
├── media.proto
├── media.proto.jackson
├── media.protostuff.proto
└── media.thrift
├── src
├── com
│ └── google
│ │ └── protobuf
│ │ └── JsonFormat.java
├── data
│ ├── ReprUtil.java
│ └── media
│ │ ├── FieldMapping.java
│ │ ├── Image.java
│ │ ├── Media.java
│ │ ├── MediaContent.java
│ │ ├── MediaContentCustom.java
│ │ └── MediaTransformer.java
├── log4j.xml
└── serializers
│ ├── BenchmarkBase.java
│ ├── BenchmarkExporter.java
│ ├── BenchmarkRunner.java
│ ├── FastSerialization.java
│ ├── Hessian.java
│ ├── JBossMarshalling.java
│ ├── JBossSerialization.java
│ ├── JavaBuiltIn.java
│ ├── JavaManual.java
│ ├── MediaItemBenchmark.java
│ ├── MediaStreamBenchmark.java
│ ├── MiscFeatures.java
│ ├── MongoDB.java
│ ├── Obser.java
│ ├── Scala.scala
│ ├── SerClass.java
│ ├── SerFeatures.java
│ ├── SerFormat.java
│ ├── SerGraph.java
│ ├── Serializer.java
│ ├── SimpleClassLoader.java
│ ├── StatsCruncher.java
│ ├── Stephenerialization.java
│ ├── TestCase.java
│ ├── TestCaseRunner.java
│ ├── TestGroup.java
│ ├── TestGroups.java
│ ├── Thrift.java
│ ├── Transformer.java
│ ├── WriteResultsToJavascript.java
│ ├── avro
│ ├── Avro.java
│ ├── AvroGeneric.java
│ ├── AvroSpecific.java
│ └── AvroTransformer.java
│ ├── capnproto
│ └── CapNProto.java
│ ├── colfer
│ └── Colfer.java
│ ├── datakernel
│ └── DataKernelSerializer.java
│ ├── dsljson
│ └── DSLJson.java
│ ├── flatbuffers
│ └── FlatBuffers.java
│ ├── fury
│ └── Fury.java
│ ├── jackson
│ ├── AsArrayIntrospector.java
│ ├── BaseJacksonDataBind.java
│ ├── BaseJacksonDriver.java
│ ├── JacksonAvroDatabind.java
│ ├── JacksonCBORDatabind.java
│ ├── JacksonJrDatabind.java
│ ├── JacksonJsonDatabind.java
│ ├── JacksonJsonManual.java
│ ├── JacksonJsonTree.java
│ ├── JacksonProtobufDatabind.java
│ ├── JacksonSmileDatabind.java
│ ├── JacksonSmileManual.java
│ ├── JacksonWithAfterburner.java
│ ├── JacksonWithColumnsDatabind.java
│ ├── JacksonXmlDatabind.java
│ └── StdJacksonDataBind.java
│ ├── java
│ ├── Image.java
│ ├── Media.java
│ └── MediaContent.java
│ ├── javaxjson
│ ├── JavaxJsonStream.java
│ ├── JavaxJsonStreamGlassfish.java
│ ├── JavaxJsonTransformer.java
│ ├── JavaxJsonTree.java
│ └── JavaxJsonTreeGlassfish.java
│ ├── json
│ ├── FastJSONArrayDatabind.java
│ ├── FastJSONDatabind.java
│ ├── FlexjsonDatabind.java
│ ├── JsonArgoTree.java
│ ├── JsonDotOrgManualTree.java
│ ├── JsonGsonDatabind.java
│ ├── JsonGsonManual.java
│ ├── JsonGsonTree.java
│ ├── JsonLibJsonDatabind.java
│ ├── JsonPathDeserializerOnly.java
│ ├── JsonSimpleManualTree.java
│ ├── JsonSimpleWithContentHandler.java
│ ├── JsonSmartManualTree.java
│ ├── JsonSvensonDatabind.java
│ ├── JsonTwoLattes.java
│ ├── JsonijJpath.java
│ └── JsonijManualTree.java
│ ├── kryo
│ └── Kryo.java
│ ├── msgpack
│ ├── ImageSizeTemplate.java
│ ├── ImageTemplate.java
│ ├── MediaContentTemplate.java
│ ├── MediaContentTypeHandler.java
│ ├── MediaPlayerTemplate.java
│ ├── MediaTemplate.java
│ ├── MsgPack.java
│ ├── MsgPackSerializer.java
│ └── TypeHandler.java
│ ├── protobuf
│ ├── ActiveMQProtobuf.java
│ ├── Protobuf.java
│ └── ProtobufJson.java
│ ├── protostuff
│ ├── Protostuff.java
│ ├── ProtostuffJson.java
│ ├── ProtostuffSmile.java
│ └── ProtostuffXml.java
│ ├── scala
│ └── media
│ │ ├── Image.scala
│ │ ├── Media.scala
│ │ └── MediaContent.scala
│ ├── stephenerialization
│ ├── Image.java
│ ├── Media.java
│ └── MediaContent.java
│ ├── wobly
│ ├── Wobly.java
│ ├── compact
│ │ ├── WImage.java
│ │ ├── WMedia.java
│ │ ├── WMediaContent.java
│ │ └── WoblyCompactUtils.java
│ └── simple
│ │ ├── WImage.java
│ │ ├── WMedia.java
│ │ ├── WMediaContent.java
│ │ └── WoblySimpleUtils.java
│ └── xml
│ ├── BaseStaxMediaSerializer.java
│ ├── ExiExificient.java
│ ├── StaxDeserializer.java
│ ├── StaxSerializer.java
│ ├── XmlJavolution.java
│ ├── XmlStax.java
│ └── XmlXStream.java
├── support
├── intellij
│ ├── .gitignore
│ ├── .idea
│ │ ├── .name
│ │ ├── compiler.xml
│ │ ├── copyright
│ │ │ └── profiles_settings.xml
│ │ ├── encodings.xml
│ │ ├── inspectionProfiles
│ │ │ ├── Project_Default.xml
│ │ │ └── profiles_settings.xml
│ │ ├── libraries
│ │ │ └── All.xml
│ │ ├── modules.xml
│ │ ├── scopes
│ │ │ └── scope_settings.xml
│ │ └── vcs.xml
│ └── Main.iml
└── scala
│ ├── scala-compiler-2.13.3.jar
│ └── scalac
└── website
├── .gitignore
├── beval.js
├── example-benchmarkResults.js
├── fchart.css
├── fchart.js
├── glue.js
└── index.html
/README:
--------------------------------------------------------------------------------
1 | Look in the "tpc" directory for source code; or see https://github.com/eishay/jvm-serializers/wiki for current results.
2 |
--------------------------------------------------------------------------------
/protowar/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/protowar/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | protowar
4 |
5 |
6 | tpc
7 |
8 |
9 |
10 | org.eclipse.wst.jsdt.core.javascriptValidator
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javabuilder
16 |
17 |
18 |
19 |
20 | org.eclipse.wst.common.project.facet.core.builder
21 |
22 |
23 |
24 |
25 | org.eclipse.wst.validation.validationbuilder
26 |
27 |
28 |
29 |
30 |
31 | org.eclipse.wst.common.project.facet.core.nature
32 | org.eclipse.jdt.core.javanature
33 | org.eclipse.wst.common.modulecore.ModuleCoreNature
34 | org.eclipse.jem.workbench.JavaEMFNature
35 | org.eclipse.wst.jsdt.core.jsNature
36 |
37 |
38 |
--------------------------------------------------------------------------------
/protowar/.settings/.jsdtscope:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | #Mon Nov 24 21:28:45 PST 2008
2 | eclipse.preferences.version=1
3 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
4 | org.eclipse.jdt.core.compiler.compliance=1.5
5 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
6 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
7 | org.eclipse.jdt.core.compiler.source=1.5
8 |
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.jst.common.project.facet.core.prefs:
--------------------------------------------------------------------------------
1 | #Mon Nov 24 21:28:47 PST 2008
2 | classpath.helper/org.eclipse.jdt.launching.JRE_CONTAINER\:\:org.eclipse.jdt.internal.launching.macosx.MacOSXType\:\:JVM\ 1.5.0\ (MacOS\ X\ Default)/owners=jst.java\:5.0
3 | eclipse.preferences.version=1
4 |
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.wst.common.component:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | uses
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.wst.common.project.facet.core.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.wst.jsdt.ui.superType.container:
--------------------------------------------------------------------------------
1 | org.eclipse.wst.jsdt.launching.baseBrowserLibrary
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.wst.jsdt.ui.superType.name:
--------------------------------------------------------------------------------
1 | Window
--------------------------------------------------------------------------------
/protowar/.settings/org.eclipse.wst.ws.service.policy.prefs:
--------------------------------------------------------------------------------
1 | #Mon Nov 24 22:02:48 PST 2008
2 | eclipse.preferences.version=1
3 | org.eclipse.wst.ws.service.policy.projectEnabled=false
4 |
--------------------------------------------------------------------------------
/protowar/WebContent/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Class-Path:
3 |
4 |
--------------------------------------------------------------------------------
/protowar/WebContent/WEB-INF/web.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | protowar
4 |
5 |
6 |
7 |
8 | ProtoWar
9 | ProtoWar
10 |
11 | org.protowar.ProtoWar
12 |
13 |
14 | ProtoWar
15 | /ProtoWar
16 |
17 |
18 | index.html
19 | index.htm
20 | index.jsp
21 | default.html
22 | default.htm
23 | default.jsp
24 |
25 |
26 |
--------------------------------------------------------------------------------
/protowar/src/org/protowar/ProtoServerHandler.java:
--------------------------------------------------------------------------------
1 | package org.protowar;
2 |
3 | import java.io.DataInputStream;
4 | import java.io.DataOutputStream;
5 | import java.io.IOException;
6 | import java.io.InputStream;
7 | import java.io.OutputStream;
8 |
9 | import serializers.ObjectSerializer;
10 | import serializers.ProtobufSerializer;
11 | import serializers.protobuf.MediaContentHolder.MediaContent;
12 | import serializers.protobuf.MediaContentHolder.MediaServer;
13 |
14 | import com.google.protobuf.Message;
15 | import com.google.protobuf.RpcCallback;
16 | import com.google.protobuf.RpcController;
17 | import com.google.protobuf.Descriptors.MethodDescriptor;
18 |
19 | class ProtoServerHandler extends MediaServer
20 | {
21 | private final ObjectSerializer _serializer = new ProtobufSerializer();
22 |
23 | @Override
24 | public void updateMedia (RpcController controller, MediaContent request, RpcCallback done)
25 | {
26 | try
27 | {
28 | //System.out.println(request.getMedia().getUri());
29 | done.run(_serializer.create());
30 | }
31 | catch (Exception e)
32 | {
33 | e.printStackTrace();
34 | }
35 | }
36 |
37 | void handle(final OutputStream os, final InputStream is) throws IOException
38 | {
39 | RpcCallback done = new RpcCallback()
40 | {
41 | DataOutputStream dos = new DataOutputStream(os);
42 |
43 | public void run (Message content)
44 | {
45 | try
46 | {
47 | byte[] array = _serializer.serialize((MediaContent) content);
48 | dos.writeInt(array.length);
49 | dos.write(array);
50 | dos.flush();
51 | }
52 | catch (Exception e)
53 | {
54 | e.printStackTrace();
55 | }
56 | }
57 | };
58 | DataInputStream dis = new DataInputStream(is);
59 | int index = dis.readInt();
60 | MethodDescriptor method = getDescriptor().getMethods().get(index);
61 | byte[] array = new byte[dis.readInt()];
62 | dis.readFully(array);
63 | Message request = getRequestPrototype(method).newBuilderForType().mergeFrom(array).build();
64 | callMethod(method, null, request, done);
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/protowar/src/org/protowar/ProtoWar.java:
--------------------------------------------------------------------------------
1 | package org.protowar;
2 |
3 | import java.io.IOException;
4 |
5 | import javax.servlet.ServletException;
6 | import javax.servlet.http.HttpServlet;
7 | import javax.servlet.http.HttpServletRequest;
8 | import javax.servlet.http.HttpServletResponse;
9 |
10 | /**
11 | * Servlet implementation class ProtoWar
12 | */
13 | public class ProtoWar extends HttpServlet
14 | {
15 | private static final long serialVersionUID = 1L;
16 |
17 | private ProtoServerHandler _handler = new ProtoServerHandler();
18 |
19 | /**
20 | * Default constructor.
21 | */
22 | public ProtoWar ()
23 | {
24 | }
25 |
26 | /**
27 | * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
28 | */
29 | protected void doGet (HttpServletRequest request, HttpServletResponse response)
30 | throws ServletException, IOException
31 | {
32 | doIt(request, response);
33 | }
34 |
35 | /**
36 | * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
37 | */
38 | protected void doPost (HttpServletRequest request, HttpServletResponse response)
39 | throws ServletException, IOException
40 | {
41 | doIt(request, response);
42 | }
43 |
44 | private void doIt (HttpServletRequest request, HttpServletResponse response)
45 | throws ServletException, IOException
46 | {
47 | _handler.handle(response.getOutputStream(), request.getInputStream());
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/scala_media_container/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/scala_media_container/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | scala_media_container
4 |
5 |
6 |
7 |
8 |
9 | ch.epfl.lamp.sdt.core.scalabuilder
10 |
11 |
12 |
13 |
14 |
15 | ch.epfl.lamp.sdt.core.scalanature
16 | org.eclipse.jdt.core.javanature
17 |
18 |
19 |
--------------------------------------------------------------------------------
/scala_media_container/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | #Sat Nov 29 21:34:27 PST 2008
2 | eclipse.preferences.version=1
3 | org.eclipse.jdt.core.builder.cleanOutputFolder=ignore
4 | org.eclipse.jdt.core.builder.resourceCopyExclusionFilter=*.scala
5 |
--------------------------------------------------------------------------------
/scala_media_container/pom.xml:
--------------------------------------------------------------------------------
1 |
3 | 4.0.0
4 | sandbox
5 | mediacontent-scala
6 | 1.0-SNAPSHOT
7 | ${project.artifactId}
8 | 2009
9 |
10 |
11 |
12 | org.scala-lang
13 | scala-library
14 | 2.7.3
15 |
16 |
17 | org.scala-libs
18 | sbinary
19 | 0.3-alpha
20 | system
21 | ${basedir}/../tpc/lib/sbinary-0.3-alpha.jar
22 |
23 |
24 |
25 |
26 | src
27 |
28 |
29 | org.scala-tools
30 | maven-scala-plugin
31 |
32 |
33 | compile
34 |
35 | compile
36 |
37 |
38 |
39 |
40 |
41 | -target:jvm-1.5
42 |
43 |
44 |
45 |
46 |
47 |
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/Image.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 |
3 | @serializable
4 | case class Image(uri: String, title: String, width: Int, height: Int, size: Size.Value)
5 |
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/Media.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 |
3 | @serializable
4 | class Media (val uri: String, val title: String,
5 | val width: Int, val height: Int, val format: String,
6 | val duration: Long, val size: Long,
7 | val bitrate: Int,
8 | val copyright: Option[String],
9 | val player: Player.Value){
10 |
11 | def this(uri: String, title: String,
12 | width: Int, height: Int, format: String,
13 | duration: Long, size: Long,
14 | bitrate: Int,
15 | player: Player.Value) = this(uri, title, width, height, format, duration, size, bitrate, None, player)
16 |
17 | private var _persons: List[String] = Nil
18 | def persons = _persons
19 |
20 | def addPerson(persons: String){
21 | _persons = persons :: _persons
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/MediaContent.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 | @serializable
3 | class MediaContent (val media: Media){
4 | var _images: List[Image] = Nil
5 | def images = _images
6 |
7 | def addImage(image: Image){
8 | _images = image :: _images
9 | }
10 | }
11 |
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/Player.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 | @serializable
3 | object Player extends Enumeration{
4 | val JAVA, FLASH = Value
5 | }
6 |
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/Runner.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 |
3 | object Runner {
4 | def main(args: Array[String]){
5 | println("start")
6 | var image1 = new Image("a", "b", 1, 2, Size.SMALL)
7 | var image2 = new Image("a", "b", 1, 2, Size.SMALL)
8 | var content = new MediaContent(null)
9 | content.addImage(image1)
10 | content.addImage(image2)
11 |
12 | println("end")
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/SbinarySerializerSupport.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 |
3 | import sbinary.DefaultProtocol
4 | import sbinary.DefaultProtocol._
5 |
6 | object MyProtocol extends DefaultProtocol{
7 | // import sbinary.DefaultProtocol._
8 |
9 | // implicit val ImageFormat : Format[Image] = asProduct5(Image)(Image.unapply(_).get)
10 | implicit object ImageFormat extends Format[Image]{
11 | def reads(in : Input) = {
12 | Image(
13 | read[String](in),
14 | read[String](in),
15 | read[Int](in),
16 | read[Int](in),
17 | read[Size.Value](in)
18 | )
19 | }
20 |
21 | def writes(out : Output, value : Image) = {
22 | write[String](out, value.uri)
23 | write[String](out, value.title)
24 | write[Int](out, value.width)
25 | write[Int](out, value.height)
26 | write[Size.Value](out, value.size)
27 | }
28 | }
29 |
30 | implicit object MediaFormat extends Format[Media]{
31 | def reads(in : Input) = {
32 | val back = new Media(
33 | read[String](in),
34 | read[String](in),
35 | read[Int](in),
36 | read[Int](in),
37 | read[String](in),
38 | read[Long](in),
39 | read[Long](in),
40 | read[Int](in),
41 | read[Option[String]](in),
42 | read[Player.Value](in)
43 | )
44 | read[List[String]](in).foreach(p => back.addPerson(p))
45 | back
46 | }
47 |
48 | def writes(out : Output, value : Media) = {
49 | write[String](out, value.uri)
50 | write[String](out, value.title)
51 | write[Int](out, value.width)
52 | write[Int](out, value.height)
53 | write[String](out, value.format)
54 | write[Long](out, value.duration)
55 | write[Long](out, value.size)
56 | write[Int](out, value.bitrate)
57 | write[Option[String]](out, value.copyright)
58 | write[Player.Value](out, value.player)
59 | write[List[String]](out, value.persons)
60 | }
61 | }
62 |
63 | // implicit object PlayerFormat extends Format[Player.Value] {
64 | // def reads(in : Input) = Player.Value(read[Int](in))
65 | // def writed(out : Output, value : Player.Value) = write[Int](out, value)
66 | // }
67 |
68 | implicit val PlayerFormat = enumerationFormat[Player.Value](Player)
69 | implicit val SizeFormat = enumerationFormat[Size.Value](Size)
70 |
71 | implicit object MediaContentFormat extends Format[MediaContent]{
72 | def reads(in : Input) = {
73 | val back = new MediaContent(read[Media](in))
74 | read[List[Image]](in).foreach(i => back.addImage(i))
75 | back
76 | }
77 |
78 | def writes(out : Output, value : MediaContent) = {
79 | write[Media](out, value.media)
80 | write[List[Image]](out, value.images)
81 | }
82 | }
83 |
84 | }
85 |
86 |
87 | object SbinarySerializerSupport {
88 | import MyProtocol._
89 | def deserialize(array : Array[Byte]) : MediaContent = fromByteArray[MediaContent](array)
90 | def serialize(content : MediaContent) : Array[Byte] = toByteArray(content)
91 | }
--------------------------------------------------------------------------------
/scala_media_container/src/serializers/scala/Size.scala:
--------------------------------------------------------------------------------
1 | package serializers.scala
2 | @serializable
3 | object Size extends Enumeration{
4 | val SMALL, LARGE = Value
5 | }
6 |
--------------------------------------------------------------------------------
/tpc/.gitignore:
--------------------------------------------------------------------------------
1 | /build
2 | /bin
3 | /results
4 |
5 | syntax: glob
6 | *~
7 |
--------------------------------------------------------------------------------
/tpc/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | tpc
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.wst.common.project.facet.core.builder
10 |
11 |
12 |
13 |
14 | org.eclipse.jdt.core.javabuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.wst.validation.validationbuilder
20 |
21 |
22 |
23 |
24 |
25 | org.eclipse.jdt.core.javanature
26 | org.eclipse.wst.common.project.facet.core.nature
27 | org.eclipse.wst.common.modulecore.ModuleCoreNature
28 | org.eclipse.jem.workbench.JavaEMFNature
29 |
30 |
31 |
--------------------------------------------------------------------------------
/tpc/README:
--------------------------------------------------------------------------------
1 | Requirements:
2 | - GNU Make 3.81+
3 | - JDK 1.7+
4 |
5 | for windows install cygwin with make+bash features
6 |
7 | To compile:
8 | make
9 | (if you run in trouble its usually because of CRLF dirt) E.g. scalac did not run because it was CRLF
10 |
11 | To run
12 |
13 | bash run-bench.sh
14 |
15 | Parameters of the default run are hardcoded in run-bench.sh
16 |
17 | To update results of subset of serializers
18 |
19 | bash run-bench.sh serializer1,serializer2,..
20 |
21 | How this works:
22 |
23 | the project was somewhat messy, i probably contributed to that .. but its easier to manage now.
24 | I removed the config files to avoid problems when serializers rename or are un/commented. Additionally
25 | each benchmark runs in a separate VM.
26 |
27 | 1) the run-bench.sh uses class BenchmarkExporter.java to get a ',' separated list of all serializers to run.
28 | All benchmarks registered in the BenchnarkRunner.java class a run be default.
29 | 2) after each bench finished, the mk-stats.sh script aggregates the results found in ./results/raw to ./results/stats.txt
30 | the the class StatsCruncher.java creates a Textile style report.
31 | To modify the report output, directly edit the StatsCruncher.java . You are welcome to enhance this using
32 | some templating/configuration files.
33 | You can copy the results/report.texfile directly to github wiki in textile-mode.
34 | 3) You can run the mk-stats.sh script again without having to re-run the benchmarks if you want to add
35 | custom query charts.
36 | 4) to filter out certain libraries, do not uncomment them in BenchMarkRunner.java (except they fail), better
37 | edit StatsCruncher.java to exclude them.
38 |
--------------------------------------------------------------------------------
/tpc/attic/README_old:
--------------------------------------------------------------------------------
1 | Requirements:
2 | - GNU Make 3.81+
3 | - JDK 1.7+
4 |
5 | To compile:
6 | make
7 |
8 | To run:
9 | ./run -help
10 |
11 | To run and generate charts with all serializers: (For official results, add -trials=500)
12 | ./run -chart -include=`cat serializers.txt | tr "\\n" ","` data/media.1.cks
13 |
14 |
15 | To generate bindings for schema files, see top of "Makefile" for
16 | instructions on what to put into "Config.mk".
17 |
--------------------------------------------------------------------------------
/tpc/attic/run:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | set -e
3 |
4 | path_sep=":"
5 | case "`uname`" in
6 | CYGWIN*) path_sep=";" ;;
7 | esac
8 |
9 | cp=build/bytecode/main$path_sep$(cat build/gen-cp)$path_sep$(cat build/lib-cp)
10 | exec java -Xmx256m -server -cp "$cp" serializers.BenchmarkRunner "$@"
11 |
--------------------------------------------------------------------------------
/tpc/attic/run-stream:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | set -e
3 |
4 | path_sep=":"
5 | case "`uname`" in
6 | CYGWIN*) path_sep=";" ;;
7 | esac
8 |
9 | cp=build/bytecode/main$path_sep$(cat build/gen-cp)$path_sep$(cat build/lib-cp)
10 | exec java -Xmx64m -server -cp "$cp" serializers.MediaStreamBenchmark "$@"
11 |
--------------------------------------------------------------------------------
/tpc/attic/run-wiki:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 |
3 | # SIMPLE/GENERIC: Serializes any POJO without special knowledge about the class.
4 | ./run -trials=500 -chart -include=java-built-in,hessian,kryo,protostuff-runtime,msgpack,json/jackson/databind,json/jackson/db-afterburner,json/google-gson/databind,json/svenson-databind,json/flexjson/databind,json/fastjson/databind,smile/jackson/databind,smile/jackson/db-afterburner,smile/protostuff-runtime,bson/jackson/databind,xml/xstream+c,xml/jackson/databind-aalto,json/protostuff-runtime data/media.1.cks
5 |
6 | # SIMPLE/SPECIFC: Serializes only specific classes using code generation or other special knowledge about the class.
7 | ./run -trials=500 -chart -include=wobly,wobly-compact,kryo-opt,protobuf,protostuff,protobuf/protostuff,thrift,thrift-compact,avro,json/json-lib-databind,json/jsonij-jpath,json/jsonpath/json.simple data/media.1.cks
8 |
9 | # MANUAL: Serializes only specific classes using hand written serialization code.
10 | ./run -trials=500 -chart -include=java-manual,kryo-manual,protostuff-manual,json/jackson/manual,json/jackson/tree,json/protostuff-manual,json/google-gson/manual,json/google-gson/manual/tree,json/json.simple/manual,json/json.simple/manual/tree,json/json-smart/manual/tree,json/org.json/manual/tree,json/jsonij-manual/tree,json/argo-manual/tree,smile/jackson/manual,smile/protostuff-manual,bson/mongodb,xml/woodstox-manual,xml/aalto-manual,xml/fastinfo-manual,xml/xstream+c-woodstox,xml/xstream+c-aalto,xml/xstream+c-fastinfo,xml/javolution,avro-generic data/media.1.cks
11 |
--------------------------------------------------------------------------------
/tpc/attic/serializers.txt:
--------------------------------------------------------------------------------
1 | java-built-in
2 | java-manual
3 | scala/java-built-in
4 | scala/sbinary
5 | fast-serialization
6 | kryo
7 | kryo-opt
8 | kryo-manual
9 | msgpack
10 | wobly
11 | wobly-compact
12 | hessian
13 | jboss-serialization
14 | jboss-marshalling-river
15 | jboss-marshalling-river-manual
16 | jboss-marshalling-river-ct
17 | jboss-marshalling-river-ct-manual
18 | jboss-marshalling-serial
19 | obser
20 | obser-compact
21 | obser-manual
22 | obser-manual-compact
23 | protobuf
24 | protobuf/activemq+alt
25 | protostuff
26 | protostuff-manual
27 | protostuff-runtime
28 | protobuf/protostuff
29 | thrift
30 | thrift-compact
31 | avro
32 | avro-generic
33 | json/jackson-manual
34 | json/jackson-manual/tree
35 | json/jackson-manual/tree-strings
36 | json/jackson-databind
37 | json/jackson-databind-strings
38 | json/protostuff-manual
39 | json/protostuff-runtime
40 | json/protobuf
41 | json/google-gson
42 | json/google-gson/manual/tree
43 | json/svenson-databind
44 | json/flexjson/databind
45 | json/json-lib-databind
46 | json/fastjson-databind
47 | json/json.simple/manual/tree
48 | json/json.simple/manual
49 | json/json-smart/manual/tree
50 | json/org.json/manual/tree
51 | json/jsonij-jpath
52 | json/jsonij-manual/tree
53 | json/argo-manual/tree
54 | json/jsonpath/json.simple
55 | bson/jackson-manual
56 | bson/jackson-databind
57 | bson/mongodb
58 | smile/jackson-manual
59 | smile/jackson-databind
60 | smile/protostuff-manual
61 | smile/protostuff-runtime
62 | xml/manual-woodstox
63 | xml/manual-aalto
64 | xml/manual-fastinfo
65 | xml/xstream+c
66 | xml/xstream+c-woodstox
67 | xml/xstream+c-aalto
68 | xml/xstream+c-fastinfo
69 | xml/javolution
70 | datakernel
71 |
--------------------------------------------------------------------------------
/tpc/data-stream/media.3.cks:
--------------------------------------------------------------------------------
1 | // Note: we use four at signs as separator, due to CKS limitations
2 | {
3 | Media = {
4 | Uri = "http://javaone.com/keynote.mpg"
5 | Title = Set: "Javaone Keynote"
6 | Width = 640
7 | Height = 480
8 | Format = "video/mpg4"
9 | Duration = 18000000 // half hour in milliseconds
10 | Size = 58982400 // bitrate * duration in seconds / 8 bits per byte
11 | Bitrate = Set: 262144 // 256k
12 | Persons = ["Bill Gates", "Steve Jobs"]
13 | Player = Java
14 | Copyright = None
15 | }
16 | Images = [ {
17 | Uri = "http://javaone.com/keynote_large.jpg"
18 | Title = Set: "Javaone Keynote"
19 | Width = 1024
20 | Height = 768
21 | Size = Large
22 | },{
23 | Uri = "http://javaone.com/keynote_small.jpg"
24 | Title = Set: "Javaone Keynote"
25 | Width = 320
26 | Height = 240
27 | Size = Small
28 | } ]
29 | }
30 | @@@@
31 | {
32 | Media = {
33 | Uri = "http://cowtowncoder.com/blog/blog.html"
34 | Title = Set: "CowTalk - Some stuff"
35 | Width = 63
36 | Height = 24
37 | Format = "text/html"
38 | Duration = 1600
39 | Size = 65536
40 | Bitrate = Set: 16000
41 | Persons = ["Tatu the Coder"]
42 | Player = Flash
43 | Copyright = None
44 | }
45 | Images = [ {
46 | Uri = "http://cowtowncoder.com/icon.jpg"
47 | Title = Set: "Cowboy Icon"
48 | Width = 128
49 | Height = 128
50 | Size = Large
51 | },{
52 | Uri = "http://cowtowncoder.com/icon-small.jpg"
53 | Title = Set: "Cowboy Icon"
54 | Width = 24
55 | Height = 24
56 | Size = Small
57 | } ]
58 | }
59 | @@@@
60 | {
61 | Media = {
62 | Uri = "http://google.com/search?foo=bar"
63 | Title = Set: "Big G -- search for masses"
64 | Width = 640
65 | Height = 480
66 | Format = "text/plain"
67 | Duration = 9000000
68 | Size = 256000
69 | Bitrate = Set: 192000
70 | Persons = ["Sergei Brin", "Steve Jobs", "Just Kiddin"]
71 | Player = Java
72 | Copyright = Set: "Probably"
73 | }
74 | Images = [ {
75 | Uri = "http://google.com/icon-large.jpg"
76 | Title = Set: "G!"
77 | Width = 192
78 | Height = 192
79 | Size = Large
80 | },{
81 | Uri = "http://google.com/icon-small.jpg"
82 | Title = Set: "Javaone Keynote"
83 | Width = 15
84 | Height = 15
85 | Size = Small
86 | } ]
87 | }
88 |
89 |
--------------------------------------------------------------------------------
/tpc/data/media.1.json:
--------------------------------------------------------------------------------
1 | // The standard test value.
2 | {
3 | "media": {
4 | "uri": "http://javaone.com/keynote.mpg",
5 | "title": "Javaone Keynote",
6 | "width": 640,
7 | "height": 480,
8 | "format": "video/mpg4",
9 | "duration": 18000000, // half hour in milliseconds
10 | "size": 58982400, // bitrate * duration in seconds / 8 bits per byte
11 | "bitrate": 262144, // 256k
12 | "persons": ["Bill Gates", "Steve Jobs스"],
13 | "player": "JAVA",
14 | "copyright": null
15 | },
16 | "images": [
17 | {
18 | "uri": "http://javaone.com/keynote_large.jpg",
19 | "title": "Javaone Keynote",
20 | "width": 1024,
21 | "height": 768,
22 | "size": "LARGE"
23 | },
24 | {
25 | "uri": "http://javaone.com/keynote_small.jpg",
26 | "title": "Javaone Keynote",
27 | "width": 320,
28 | "height": 240,
29 | "size": "SMALL"
30 | }
31 | ]
32 | }
33 |
--------------------------------------------------------------------------------
/tpc/data/media.2.json:
--------------------------------------------------------------------------------
1 | // A test value where everything is different from media.1.json.
2 | // Also uses Unicode to make sure nobody's cheating and only handling ASCII.
3 | // This is mainly used to check if the serializers are "honest".
4 | {
5 | "media": {
6 | "uri": "http://javaone.com/keynote.ogg\u1234",
7 | "title": null,
8 | "width": 641,
9 | "height": 481,
10 | "format": "video/theora\u1234",
11 | "duration": 18000001,
12 | "size": 58982401,
13 | "bitrate": null,
14 | "persons": ["Bill Gates, Jr.\u1234", "Steven Jobs\u1234"],
15 | "player": "FLASH",
16 | "copyright": "2009, Scooby Doo\uD834\uDD1E" // last two characters are a UTF-16 surrogate pair
17 | },
18 |
19 | "images": [
20 | {
21 | "uri": "http://javaone.com/keynote_huge.jpg\u1234",
22 | "title": "Javaone Keynote\u1234",
23 | "width": 32000,
24 | "height": 24000,
25 | "size": "LARGE"
26 | },
27 | {
28 | "uri": "http://javaone.com/keynote_large.jpg\u1234",
29 | "title": null,
30 | "width": 1024,
31 | "height": 768,
32 | "size": "LARGE"
33 | },
34 | {
35 | "uri": "http://javaone.com/keynote_small.jpg\u1234",
36 | "title": null,
37 | "width": 320,
38 | "height": 240,
39 | "size": "SMALL"
40 | }
41 | ]
42 | }
43 |
--------------------------------------------------------------------------------
/tpc/data/media.3.json:
--------------------------------------------------------------------------------
1 | // Long strings.
2 | {
3 | "media": {
4 | "uri": "http://javaone.com/keynote.mpglkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
5 | "title": "Javaone Keynotelkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
6 | "width": 640,
7 | "height": 480,
8 | "format": "video/mpg4lkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
9 | "duration": 18000000, // half hour in milliseconds
10 | "size": 58982400, // bitrate * duration in seconds / 8 bits per byte
11 | "bitrate": 262144, // 256k
12 | "persons": ["Bill Gateslkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj", "Steve Jobslkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj"],
13 | "player": "JAVA",
14 | "copyright": null
15 | },
16 |
17 | "images": [
18 | {
19 | "uri": "http://javaone.com/keynote_large.jpglkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
20 | "title": "Javaone Keynotelkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
21 | "width": 1024,
22 | "height": 768,
23 | "size": "LARGE"
24 | },
25 | {
26 | "uri": "http://javaone.com/keynote_small.jpglkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
27 | "title": "Javaone Keynotelkajldfjlskajdflkjslfjdslfjldjfljsdfljsdlfjsljfldjfldjals;djfasldjf;alskdjf;aslkdjf;asdjf;laskdjflsjdalfjd;alksjdfl;jsa;lfdja;slkdjf;alsjfd;lajsfl;dj",
28 | "width": 320,
29 | "height": 240,
30 | "size": "SMALL"
31 | }
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/tpc/data/media.4.json:
--------------------------------------------------------------------------------
1 | // Short strings.
2 | {
3 | "media": {
4 | "uri": "g",
5 | "title": "J",
6 | "width": 640,
7 | "height": 480,
8 | "format": "v",
9 | "duration": 18000000, // half hour in milliseconds
10 | "size": 58982400, // bitrate * duration in seconds / 8 bits per byte
11 | "bitrate": 262144, // 256k
12 | "persons": ["B", "S"],
13 | "player": "JAVA",
14 | "copyright": null
15 | },
16 |
17 | "images": [
18 | {
19 | "uri": "h",
20 | "title": "J",
21 | "width": 1024,
22 | "height": 768,
23 | "size": "LARGE"
24 | },
25 | {
26 | "uri": "h",
27 | "title": "J",
28 | "width": 320,
29 | "height": 240,
30 | "size": "SMALL"
31 | }
32 | ]
33 | }
34 |
--------------------------------------------------------------------------------
/tpc/lib/FastInfoset-1.2.6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/FastInfoset-1.2.6.jar
--------------------------------------------------------------------------------
/tpc/lib/aalto-xml-1.2.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/aalto-xml-1.2.2.jar
--------------------------------------------------------------------------------
/tpc/lib/activemq-protobuf-1.1-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/activemq-protobuf-1.1-SNAPSHOT.jar
--------------------------------------------------------------------------------
/tpc/lib/activemq-util-6.0-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/activemq-util-6.0-SNAPSHOT.jar
--------------------------------------------------------------------------------
/tpc/lib/argo-2.10.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/argo-2.10.jar
--------------------------------------------------------------------------------
/tpc/lib/asm-4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/asm-4.0.jar
--------------------------------------------------------------------------------
/tpc/lib/asm-commons-3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/asm-commons-3.2.jar
--------------------------------------------------------------------------------
/tpc/lib/avro-1.10.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/avro-1.10.0.jar
--------------------------------------------------------------------------------
/tpc/lib/avro-compiler-1.10.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/avro-compiler-1.10.0.jar
--------------------------------------------------------------------------------
/tpc/lib/avro-fastserde-0.2.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/avro-fastserde-0.2.4.jar
--------------------------------------------------------------------------------
/tpc/lib/bson-2.7.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/bson-2.7.1.jar
--------------------------------------------------------------------------------
/tpc/lib/bson4jackson-2.7.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/bson4jackson-2.7.0.jar
--------------------------------------------------------------------------------
/tpc/lib/capnproto-runtime-0.1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/capnproto-runtime-0.1.1.jar
--------------------------------------------------------------------------------
/tpc/lib/codemodel-2.6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/codemodel-2.6.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-beanutils-1.8.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-beanutils-1.8.3.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-codec-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-codec-1.3.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-collections-3.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-collections-3.2.1.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-httpclient-3.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-httpclient-3.1.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-lang-2.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-lang-2.4.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-lang3-3.4.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-lang3-3.4.jar
--------------------------------------------------------------------------------
/tpc/lib/commons-logging-1.1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/commons-logging-1.1.1.jar
--------------------------------------------------------------------------------
/tpc/lib/dsl-json-1.9.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/dsl-json-1.9.5.jar
--------------------------------------------------------------------------------
/tpc/lib/dsl-json-java8-1.9.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/dsl-json-java8-1.9.5.jar
--------------------------------------------------------------------------------
/tpc/lib/exi-exificient-0.9.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/exi-exificient-0.9.1.jar
--------------------------------------------------------------------------------
/tpc/lib/extra/avro-tools-1.8.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/extra/avro-tools-1.8.2.jar
--------------------------------------------------------------------------------
/tpc/lib/ezmorph-1.0.6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/ezmorph-1.0.6.jar
--------------------------------------------------------------------------------
/tpc/lib/fastjson-1.2.11.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/fastjson-1.2.11.jar
--------------------------------------------------------------------------------
/tpc/lib/flatbuffers-java-1.9.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/flatbuffers-java-1.9.0.jar
--------------------------------------------------------------------------------
/tpc/lib/flexjson-2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/flexjson-2.1.jar
--------------------------------------------------------------------------------
/tpc/lib/fst-1.42.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/fst-1.42.jar
--------------------------------------------------------------------------------
/tpc/lib/fury-core-0.2.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/fury-core-0.2.0.jar
--------------------------------------------------------------------------------
/tpc/lib/gson-2.8.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/gson-2.8.0.jar
--------------------------------------------------------------------------------
/tpc/lib/guava-19.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/guava-19.0.jar
--------------------------------------------------------------------------------
/tpc/lib/helper-all-0.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/helper-all-0.2.1.jar
--------------------------------------------------------------------------------
/tpc/lib/hessian-4.0.7.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/hessian-4.0.7.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-all-1.9.6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-all-1.9.6.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-annotations-2.9.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-annotations-2.9.0.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-core-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-core-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-databind-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-databind-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-dataformat-avro-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-dataformat-avro-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-dataformat-cbor-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-dataformat-cbor-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-dataformat-protobuf-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-dataformat-protobuf-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-dataformat-smile-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-dataformat-smile-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-dataformat-xml-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-dataformat-xml-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-dataformat-yaml-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-dataformat-yaml-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-jr-objects-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-jr-objects-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-module-afterburner-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-module-afterburner-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jackson-module-jaxb-annotations-2.9.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jackson-module-jaxb-annotations-2.9.2.jar
--------------------------------------------------------------------------------
/tpc/lib/jakarta.xml.bind-api-2.3.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jakarta.xml.bind-api-2.3.3.jar
--------------------------------------------------------------------------------
/tpc/lib/javassist-3.27.0-GA.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/javassist-3.27.0-GA.jar
--------------------------------------------------------------------------------
/tpc/lib/javax.annotation-api-1.3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/javax.annotation-api-1.3.2.jar
--------------------------------------------------------------------------------
/tpc/lib/javax.json-1.0-b06.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/javax.json-1.0-b06.jar
--------------------------------------------------------------------------------
/tpc/lib/javolution-5.5.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/javolution-5.5.1.jar
--------------------------------------------------------------------------------
/tpc/lib/jboss-marshalling-2.0.9.Final.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jboss-marshalling-2.0.9.Final.jar
--------------------------------------------------------------------------------
/tpc/lib/jboss-marshalling-river-2.0.9.Final.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jboss-marshalling-river-2.0.9.Final.jar
--------------------------------------------------------------------------------
/tpc/lib/jboss-marshalling-serial-2.0.9.Final.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jboss-marshalling-serial-2.0.9.Final.jar
--------------------------------------------------------------------------------
/tpc/lib/jboss-serialization-4.2.2.GA.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jboss-serialization-4.2.2.GA.jar
--------------------------------------------------------------------------------
/tpc/lib/jopt-simple-3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jopt-simple-3.2.jar
--------------------------------------------------------------------------------
/tpc/lib/json-0.19-tpc.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/json-0.19-tpc.jar
--------------------------------------------------------------------------------
/tpc/lib/json-lib-2.4-jdk15.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/json-lib-2.4-jdk15.jar
--------------------------------------------------------------------------------
/tpc/lib/json-smart-1.0.8.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/json-smart-1.0.8.jar
--------------------------------------------------------------------------------
/tpc/lib/json.org-ref-2011.06.21.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/json.org-ref-2011.06.21.jar
--------------------------------------------------------------------------------
/tpc/lib/json_simple-1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/json_simple-1.1.jar
--------------------------------------------------------------------------------
/tpc/lib/jsonij-0.2.7.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jsonij-0.2.7.jar
--------------------------------------------------------------------------------
/tpc/lib/jsonpath-2011.06.23.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/jsonpath-2011.06.23.jar
--------------------------------------------------------------------------------
/tpc/lib/kryo-5.0.0-RC6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/kryo-5.0.0-RC6.jar
--------------------------------------------------------------------------------
/tpc/lib/libthrift-0.13.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/libthrift-0.13.0.jar
--------------------------------------------------------------------------------
/tpc/lib/log4j-1.2.17.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/log4j-1.2.17.jar
--------------------------------------------------------------------------------
/tpc/lib/minlog-none-1.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/minlog-none-1.2.jar
--------------------------------------------------------------------------------
/tpc/lib/msgpack-0.6.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/msgpack-0.6.9.jar
--------------------------------------------------------------------------------
/tpc/lib/objenesis-1.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/objenesis-1.2.jar
--------------------------------------------------------------------------------
/tpc/lib/obser-0.9.0-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/obser-0.9.0-SNAPSHOT.jar
--------------------------------------------------------------------------------
/tpc/lib/paranamer-1.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/paranamer-1.5.jar
--------------------------------------------------------------------------------
/tpc/lib/protobuf-java-3.6.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protobuf-java-3.6.1.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-api-1.5.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-api-1.5.9.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-collectionschema-1.5.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-collectionschema-1.5.9.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-compiler-1.5.9-jar-with-dependencies.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-compiler-1.5.9-jar-with-dependencies.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-core-1.5.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-core-1.5.9.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-json-1.5.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-json-1.5.9.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-runtime-1.5.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-runtime-1.5.9.jar
--------------------------------------------------------------------------------
/tpc/lib/protostuff-xml-1.5.9.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/protostuff-xml-1.5.9.jar
--------------------------------------------------------------------------------
/tpc/lib/reflectasm-1.05.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/reflectasm-1.05.jar
--------------------------------------------------------------------------------
/tpc/lib/sbinary_2.11-0.4.3-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/sbinary_2.11-0.4.3-SNAPSHOT.jar
--------------------------------------------------------------------------------
/tpc/lib/scala-library-2.13.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/scala-library-2.13.3.jar
--------------------------------------------------------------------------------
/tpc/lib/scala-reflect-2.13.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/scala-reflect-2.13.3.jar
--------------------------------------------------------------------------------
/tpc/lib/scala-xml_2.11-1.0.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/scala-xml_2.11-1.0.2.jar
--------------------------------------------------------------------------------
/tpc/lib/serializer-1.1.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/serializer-1.1.2.jar
--------------------------------------------------------------------------------
/tpc/lib/slf4j-api-1.7.14.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/slf4j-api-1.7.14.jar
--------------------------------------------------------------------------------
/tpc/lib/slf4j-log4j12-1.7.14.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/slf4j-log4j12-1.7.14.jar
--------------------------------------------------------------------------------
/tpc/lib/snakeyaml-1.18.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/snakeyaml-1.18.jar
--------------------------------------------------------------------------------
/tpc/lib/stax-api-1.0.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/stax-api-1.0.1.jar
--------------------------------------------------------------------------------
/tpc/lib/stax2-api-3.0.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/stax2-api-3.0.1.jar
--------------------------------------------------------------------------------
/tpc/lib/stephenerialization-3.0.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/stephenerialization-3.0.0.jar
--------------------------------------------------------------------------------
/tpc/lib/svenson-1.4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/svenson-1.4.0.jar
--------------------------------------------------------------------------------
/tpc/lib/trove-1.0.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/trove-1.0.2.jar
--------------------------------------------------------------------------------
/tpc/lib/velocity-1.7-dep.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/velocity-1.7-dep.jar
--------------------------------------------------------------------------------
/tpc/lib/velocity-1.7.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/velocity-1.7.jar
--------------------------------------------------------------------------------
/tpc/lib/wobly-core-1.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/wobly-core-1.0.jar
--------------------------------------------------------------------------------
/tpc/lib/woodstox-core-5.0.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/woodstox-core-5.0.3.jar
--------------------------------------------------------------------------------
/tpc/lib/xpp3_min-1.1.4c.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/xpp3_min-1.1.4c.jar
--------------------------------------------------------------------------------
/tpc/lib/xstream-1.3.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/eishay/jvm-serializers/3f7e4bc94e40f2c8c89acd3d2e51454867cec596/tpc/lib/xstream-1.3.1.jar
--------------------------------------------------------------------------------
/tpc/mk-js-stats:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | # ------------------------------------------------------------------------------
3 | # Reads in the combined stats file (generated by mk-stats.sh) and writes to
4 | # a Javascript file (website/benchmarkResults.js) so the results can be viewed
5 | # with the dynamic results website (website/index.html).
6 | # ------------------------------------------------------------------------------
7 | set -e
8 |
9 | input_file_rel="results/stats.txt"
10 | output_file_rel="website/benchmarkResults.js"
11 |
12 | # Locate the script file. Cross symlinks if necessary.
13 | loc="$0"
14 | while [ -h "$loc" ]; do
15 | ls=`ls -ld "$loc"`
16 | link=`expr "$ls" : '.*-> \(.*\)$'`
17 | if expr "$link" : '/.*' > /dev/null; then
18 | loc="$link" # Absolute link
19 | else
20 | loc="`dirname "$loc"`/$link" # Relative link
21 | fi
22 | done
23 |
24 | base_dir=`dirname "$loc"`
25 |
26 | if [ $# -ne 0 ]; then
27 | echo "Expecting no arguments, got $#." 1>&2
28 | exit 1
29 | fi
30 |
31 | input_file="$base_dir/$input_file_rel"
32 | if [ ! -f "$input_file" ]; then
33 | echo "Couldn't find input file \"$input_file\"." 1>&2
34 | echo "This file is typically generated by running \"./mk-stats.sh\"." 1>&2
35 | exit 1
36 | fi
37 |
38 | output_file="$base_dir/$output_file_rel"
39 | output_dir=$(dirname "$output_file")
40 | if [ ! -d "$output_dir" ]; then
41 | echo "Couldn't find output directory \"$output_dir\"." 1>&2
42 | exit 1
43 | fi
44 |
45 | # Build classpath.
46 | cpgen=$(cat build/gen-cp)
47 | cplib=$(cat build/lib-cp)
48 | sep=':'
49 | # cygwin
50 | case "`uname`" in
51 | CYGWIN*) sep=';' ;;
52 | esac
53 | cp="./build/bytecode/main$sep$cpgen$sep$cplib"
54 |
55 | echo "Writing results to: $output_file"
56 | java -cp "$cp" serializers.WriteResultsToJavascript "$input_file" "$output_file"
57 | echo "Open \"$output_dir/index.html\" in a web browser to see graphs."
58 |
--------------------------------------------------------------------------------
/tpc/mk-stats.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 |
3 | raw_result_dir="results/raw"
4 | combined_file="results/stats.txt"
5 | output_file="results/report.texfile"
6 |
7 | mkdir -p "$(dirname "$combined_input")"
8 | echo "" > "$combined_file"
9 | for f in "$raw_result_dir/"*"-result.txt"; do
10 | echo "Processing: $f"
11 | awk '/./{line=$0} END{print line}' "$f" >> "$combined_file"
12 | done
13 |
14 | cpgen=$(cat build/gen-cp)
15 | cplib=$(cat build/lib-cp)
16 | sep=':'
17 | # cygwin
18 | case "`uname`" in
19 | CYGWIN*) sep=';' ;;
20 | esac
21 |
22 | cp=./build/bytecode/main$sep$cpgen$sep$cplib
23 |
24 | echo "Writing results to: $output_file"
25 | exec java -cp $cp serializers.StatsCruncher "$combined_file" "$output_file"
26 |
--------------------------------------------------------------------------------
/tpc/pregen/media.fbs/serializers/flatbuffers/media/Image.java:
--------------------------------------------------------------------------------
1 | // automatically generated by the FlatBuffers compiler, do not modify
2 |
3 | package serializers.flatbuffers.media;
4 |
5 | import java.nio.*;
6 | import java.lang.*;
7 | import java.util.*;
8 | import com.google.flatbuffers.*;
9 |
10 | @SuppressWarnings("unused")
11 | public final class Image extends Table {
12 | public static Image getRootAsImage(ByteBuffer _bb) { return getRootAsImage(_bb, new Image()); }
13 | public static Image getRootAsImage(ByteBuffer _bb, Image obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
14 | public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
15 | public Image __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
16 |
17 | public String uri() { int o = __offset(4); return o != 0 ? __string(o + bb_pos) : null; }
18 | public ByteBuffer uriAsByteBuffer() { return __vector_as_bytebuffer(4, 1); }
19 | public ByteBuffer uriInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 4, 1); }
20 | public String title() { int o = __offset(6); return o != 0 ? __string(o + bb_pos) : null; }
21 | public ByteBuffer titleAsByteBuffer() { return __vector_as_bytebuffer(6, 1); }
22 | public ByteBuffer titleInByteBuffer(ByteBuffer _bb) { return __vector_in_bytebuffer(_bb, 6, 1); }
23 | public int width() { int o = __offset(8); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
24 | public int height() { int o = __offset(10); return o != 0 ? bb.getInt(o + bb_pos) : 0; }
25 | public byte size() { int o = __offset(12); return o != 0 ? bb.get(o + bb_pos) : 0; }
26 |
27 | public static int createImage(FlatBufferBuilder builder,
28 | int uriOffset,
29 | int titleOffset,
30 | int width,
31 | int height,
32 | byte size) {
33 | builder.startObject(5);
34 | Image.addHeight(builder, height);
35 | Image.addWidth(builder, width);
36 | Image.addTitle(builder, titleOffset);
37 | Image.addUri(builder, uriOffset);
38 | Image.addSize(builder, size);
39 | return Image.endImage(builder);
40 | }
41 |
42 | public static void startImage(FlatBufferBuilder builder) { builder.startObject(5); }
43 | public static void addUri(FlatBufferBuilder builder, int uriOffset) { builder.addOffset(0, uriOffset, 0); }
44 | public static void addTitle(FlatBufferBuilder builder, int titleOffset) { builder.addOffset(1, titleOffset, 0); }
45 | public static void addWidth(FlatBufferBuilder builder, int width) { builder.addInt(2, width, 0); }
46 | public static void addHeight(FlatBufferBuilder builder, int height) { builder.addInt(3, height, 0); }
47 | public static void addSize(FlatBufferBuilder builder, byte size) { builder.addByte(4, size, 0); }
48 | public static int endImage(FlatBufferBuilder builder) {
49 | int o = builder.endObject();
50 | builder.required(o, 4); // uri
51 | return o;
52 | }
53 | }
54 |
55 |
--------------------------------------------------------------------------------
/tpc/pregen/media.fbs/serializers/flatbuffers/media/MediaContent.java:
--------------------------------------------------------------------------------
1 | // automatically generated by the FlatBuffers compiler, do not modify
2 |
3 | package serializers.flatbuffers.media;
4 |
5 | import java.nio.*;
6 | import java.lang.*;
7 | import java.util.*;
8 | import com.google.flatbuffers.*;
9 |
10 | @SuppressWarnings("unused")
11 | public final class MediaContent extends Table {
12 | public static MediaContent getRootAsMediaContent(ByteBuffer _bb) { return getRootAsMediaContent(_bb, new MediaContent()); }
13 | public static MediaContent getRootAsMediaContent(ByteBuffer _bb, MediaContent obj) { _bb.order(ByteOrder.LITTLE_ENDIAN); return (obj.__assign(_bb.getInt(_bb.position()) + _bb.position(), _bb)); }
14 | public void __init(int _i, ByteBuffer _bb) { bb_pos = _i; bb = _bb; }
15 | public MediaContent __assign(int _i, ByteBuffer _bb) { __init(_i, _bb); return this; }
16 |
17 | public Image images(int j) { return images(new Image(), j); }
18 | public Image images(Image obj, int j) { int o = __offset(4); return o != 0 ? obj.__assign(__indirect(__vector(o) + j * 4), bb) : null; }
19 | public int imagesLength() { int o = __offset(4); return o != 0 ? __vector_len(o) : 0; }
20 | public Media media() { return media(new Media()); }
21 | public Media media(Media obj) { int o = __offset(6); return o != 0 ? obj.__assign(__indirect(o + bb_pos), bb) : null; }
22 |
23 | public static int createMediaContent(FlatBufferBuilder builder,
24 | int imagesOffset,
25 | int mediaOffset) {
26 | builder.startObject(2);
27 | MediaContent.addMedia(builder, mediaOffset);
28 | MediaContent.addImages(builder, imagesOffset);
29 | return MediaContent.endMediaContent(builder);
30 | }
31 |
32 | public static void startMediaContent(FlatBufferBuilder builder) { builder.startObject(2); }
33 | public static void addImages(FlatBufferBuilder builder, int imagesOffset) { builder.addOffset(0, imagesOffset, 0); }
34 | public static int createImagesVector(FlatBufferBuilder builder, int[] data) { builder.startVector(4, data.length, 4); for (int i = data.length - 1; i >= 0; i--) builder.addOffset(data[i]); return builder.endVector(); }
35 | public static void startImagesVector(FlatBufferBuilder builder, int numElems) { builder.startVector(4, numElems, 4); }
36 | public static void addMedia(FlatBufferBuilder builder, int mediaOffset) { builder.addOffset(1, mediaOffset, 0); }
37 | public static int endMediaContent(FlatBufferBuilder builder) {
38 | int o = builder.endObject();
39 | builder.required(o, 4); // images
40 | builder.required(o, 6); // media
41 | return o;
42 | }
43 | public static void finishMediaContentBuffer(FlatBufferBuilder builder, int offset) { builder.finish(offset); }
44 | public static void finishSizePrefixedMediaContentBuffer(FlatBufferBuilder builder, int offset) { builder.finishSizePrefixed(offset); }
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/tpc/pregen/media.fbs/serializers/flatbuffers/media/Player.java:
--------------------------------------------------------------------------------
1 | // automatically generated by the FlatBuffers compiler, do not modify
2 |
3 | package serializers.flatbuffers.media;
4 |
5 | public final class Player {
6 | private Player() { }
7 | public static final byte JAVA = 0;
8 | public static final byte FLASH = 1;
9 |
10 | public static final String[] names = { "JAVA", "FLASH", };
11 |
12 | public static String name(int e) { return names[e]; }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/tpc/pregen/media.fbs/serializers/flatbuffers/media/Size.java:
--------------------------------------------------------------------------------
1 | // automatically generated by the FlatBuffers compiler, do not modify
2 |
3 | package serializers.flatbuffers.media;
4 |
5 | public final class Size {
6 | private Size() { }
7 | public static final byte SMALL = 0;
8 | public static final byte LARGE = 1;
9 |
10 | public static final String[] names = { "SMALL", "LARGE", };
11 |
12 | public static String name(int e) { return names[e]; }
13 | }
14 |
15 |
--------------------------------------------------------------------------------
/tpc/pregen/media.thrift/gen-javabean/serializers/thrift/media/Player.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Autogenerated by Thrift Compiler (0.13.0)
3 | *
4 | * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5 | * @generated
6 | */
7 | package serializers.thrift.media;
8 |
9 |
10 | @javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.13.0)", date = "2020-07-03")
11 | public enum Player implements org.apache.thrift.TEnum {
12 | JAVA(0),
13 | FLASH(1);
14 |
15 | private final int value;
16 |
17 | private Player(int value) {
18 | this.value = value;
19 | }
20 |
21 | /**
22 | * Get the integer value of this enum value, as defined in the Thrift IDL.
23 | */
24 | public int getValue() {
25 | return value;
26 | }
27 |
28 | /**
29 | * Find a the enum type by its integer value, as defined in the Thrift IDL.
30 | * @return null if the value is not found.
31 | */
32 | @org.apache.thrift.annotation.Nullable
33 | public static Player findByValue(int value) {
34 | switch (value) {
35 | case 0:
36 | return JAVA;
37 | case 1:
38 | return FLASH;
39 | default:
40 | return null;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/tpc/pregen/media.thrift/gen-javabean/serializers/thrift/media/Size.java:
--------------------------------------------------------------------------------
1 | /**
2 | * Autogenerated by Thrift Compiler (0.13.0)
3 | *
4 | * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5 | * @generated
6 | */
7 | package serializers.thrift.media;
8 |
9 |
10 | @javax.annotation.Generated(value = "Autogenerated by Thrift Compiler (0.13.0)", date = "2020-07-03")
11 | public enum Size implements org.apache.thrift.TEnum {
12 | SMALL(0),
13 | LARGE(1);
14 |
15 | private final int value;
16 |
17 | private Size(int value) {
18 | this.value = value;
19 | }
20 |
21 | /**
22 | * Get the integer value of this enum value, as defined in the Thrift IDL.
23 | */
24 | public int getValue() {
25 | return value;
26 | }
27 |
28 | /**
29 | * Find a the enum type by its integer value, as defined in the Thrift IDL.
30 | * @return null if the value is not found.
31 | */
32 | @org.apache.thrift.annotation.Nullable
33 | public static Size findByValue(int value) {
34 | switch (value) {
35 | case 0:
36 | return SMALL;
37 | case 1:
38 | return LARGE;
39 | default:
40 | return null;
41 | }
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/tpc/run-bench.sh:
--------------------------------------------------------------------------------
1 | #! /usr/bin/env bash
2 | set -e
3 |
4 | raw_result_dir="results/raw"
5 |
6 | mem=-Xmx256m
7 | clz=serializers.BenchmarkRunner
8 |
9 | cpgen=$(cat build/gen-cp)
10 | cplib=$(cat build/lib-cp)
11 | sep=':'
12 | # cygwin
13 | case "`uname`" in
14 | CYGWIN*) sep=';' ;;
15 | esac
16 |
17 | cp=./build/bytecode/main$sep$cpgen$sep$cplib
18 |
19 | # for low run-to-run jitter (anyway expect ~3% run-to-run jitter)
20 | # testTime=60000
21 | # warmupTime=60000
22 | # turn off turbo boost and any other kind of dynamic clock scaling
23 |
24 | testTime=10000
25 | warmupTime=15000
26 | iter=2000
27 |
28 | if [ $# -eq 0 ]; then
29 | if [ -e "$raw_result_dir" ]; then
30 | rm -r "$raw_result_dir"
31 | fi
32 | sentence=$(java -cp $cp serializers.BenchmarkExporter) # just grab all serializers
33 | elif [ $# -eq 1 ]; then
34 | sentence=$1
35 | else
36 | echo "Expecting zero or one argument, got $#." 1>&2
37 | exit 1
38 | fi
39 |
40 | mkdir -p "$raw_result_dir"
41 |
42 | sentence=${sentence//,/$'\n'} # change the colons to white space
43 | for word in $sentence
44 | do
45 | echo "running $word .."
46 | file=$word-result.txt
47 | file="$raw_result_dir"/${file//\//-} # change '/' to '-'
48 | echo $word > $file
49 | java $mem -cp $cp $clz -iterations=$iter -warmup-time=$warmupTime -testRunMillis=$testTime -include=$word data/media.1.json >> $file || code=$?
50 | if [[ $code -ne 0 ]]; then
51 | echo "ERROR: exit code $code"
52 | exit $code
53 | fi
54 | done
55 |
56 | # find files with no numbers => errors
57 | echo ""
58 | echo "====================================================================================="
59 | echo "errors:"
60 | find ./results/raw/. -print -type f -name "*.txt" -exec tail -1 {} \; | grep -B 1 create
61 | echo "====================================================================================="
62 | echo ""
63 |
64 | exec ./mk-stats.sh
65 |
--------------------------------------------------------------------------------
/tpc/schema/media.activemq.proto:
--------------------------------------------------------------------------------
1 | // See README.txt for information and build instructions.
2 |
3 | package serializers.activemq.media;
4 |
5 | option java_package = "serializers.activemq.media";
6 | option java_outer_classname = "MediaContentHolder";
7 | option optimize_for = SPEED;
8 |
9 | message Image {
10 | required string uri = 1; //url to the thumbnail
11 | optional string title = 2; //used in the html ALT
12 | required int32 width = 3; // of the image
13 | required int32 height = 4; // of the image
14 | enum Size {
15 | SMALL = 0;
16 | LARGE = 1;
17 | }
18 | required Size size = 5; // of the image (in relative terms, provided by cnbc for example)
19 | }
20 |
21 | message Media {
22 | required string uri = 1; //uri to the video, may not be an actual URL
23 | optional string title = 2; //used in the html ALT
24 | required int32 width = 3; // of the video
25 | required int32 height = 4; // of the video
26 | required string format = 5; //avi, jpg, youtube, cnbc, audio/mpeg formats ...
27 | required int64 duration = 6; //time in miliseconds
28 | required int64 size = 7; //file size
29 | optional int32 bitrate = 8; //video
30 | repeated string person = 9; //name of a person featured in the video
31 | enum Player {
32 | JAVA = 0;
33 | FLASH = 1;
34 | }
35 | required Player player = 10; //in case of a player specific media
36 | optional string copyright = 11;//media copyright
37 | }
38 |
39 | message MediaContent {
40 | repeated Image image = 1;
41 | required Media media = 2;
42 | }
43 |
--------------------------------------------------------------------------------
/tpc/schema/media.avro:
--------------------------------------------------------------------------------
1 | {"type": "record", "name": "MediaContent", "namespace": "serializers.avro.media", "fields": [
2 | {"name": "images", "type": {"type": "array",
3 | "items": {"type": "record", "name": "Image",
4 | "fields": [
5 | {"name": "uri", "type": "string"},
6 | {"name": "title", "type": ["null", "string"]},
7 | {"name": "width", "type": "int"},
8 | {"name": "height", "type": "int"},
9 | {"name": "size", "type": "int"}
10 | ]
11 | }
12 | }},
13 | {"name": "media",
14 | "type": {"type": "record", "name": "Media",
15 | "fields": [
16 | {"name": "uri", "type": "string"},
17 | {"name": "title", "type": ["null", "string"]},
18 | {"name": "width", "type": "int"},
19 | {"name": "height", "type": "int"},
20 | {"name": "format", "type": "string"},
21 | {"name": "duration", "type": "long"},
22 | {"name": "size", "type": "long"},
23 | {"name": "bitrate", "type": ["null", "int"]},
24 | {"name": "persons", "type": {"type": "array", "items": "string"}},
25 | {"name": "player", "type": "int"},
26 | {"name": "copyright", "type": ["null", "string"]}
27 | ]
28 | }
29 | }
30 | ]}
31 |
--------------------------------------------------------------------------------
/tpc/schema/media.capnp:
--------------------------------------------------------------------------------
1 | @0xfdb08e6f13e7cf36;
2 | using Java = import "/java.capnp";
3 | $Java.package("serializers.capnproto.media");
4 | $Java.outerClassname("Mediacontent");
5 |
6 | struct Image {
7 | uri @0 :Text;
8 | title @1 :Text;
9 | width @2 :Int32;
10 | height @3 :Int32;
11 | enum Size {
12 | small @0;
13 | large @1;
14 | }
15 | size @4 :Size;
16 | }
17 |
18 | struct Media {
19 | uri @0 :Text;
20 | title @1 :Text;
21 | width @2 :Int32;
22 | height @3 :Int32;
23 | format @4 :Text;
24 | duration @5 :Int64;
25 | size @6 :Int64;
26 | bitrate @7 :Int32;
27 | persons @8 :List(Text);
28 | enum Player {
29 | java @0;
30 | flash @1;
31 | }
32 | player @9 :Player;
33 | copyright @10 :Text;
34 | }
35 |
36 | struct MediaContent {
37 | images @0 :List(Image);
38 | media @1 :Media;
39 | }
40 |
--------------------------------------------------------------------------------
/tpc/schema/media.colf:
--------------------------------------------------------------------------------
1 | package media
2 |
3 | type mediaContent struct {
4 | images []image
5 | media media
6 | }
7 |
8 | type image struct {
9 | uri text
10 | title text
11 | width int32
12 | height int32
13 | small bool
14 | large bool
15 | }
16 |
17 | type media struct {
18 | uri text
19 | title text
20 | width int32
21 | height int32
22 | format text
23 | duration int64
24 | size int64
25 | persons []text
26 | copyright text
27 | bitrate int32
28 | hasBitrate bool
29 | flashPlay bool
30 | javaPlay bool
31 | }
32 |
--------------------------------------------------------------------------------
/tpc/schema/media.fbs:
--------------------------------------------------------------------------------
1 | namespace serializers.flatbuffers.media;
2 |
3 | enum Size:byte {
4 | SMALL = 0,
5 | LARGE = 1
6 | }
7 | enum Player:byte {
8 | JAVA = 0,
9 | FLASH = 1
10 | }
11 |
12 | table Image {
13 | uri:string (id: 0, required);
14 | title:string (id: 1);
15 | width:int (id: 2);
16 | height:int (id: 3);
17 | size:Size (id: 4);
18 | }
19 |
20 | table Media {
21 | uri:string (id: 0, required);
22 | title:string (id: 1);
23 | width:int (id: 2);
24 | height:int (id: 3);
25 | format:string (id: 4, required);
26 | duration:long (id: 5);
27 | size:long (id: 6);
28 | bitrate:int (id: 7);
29 | persons:[string] (id: 8, required);
30 | player:Player (id: 9);
31 | copyright:string (id: 10);
32 | }
33 |
34 | table MediaContent {
35 | images:[Image] (id: 0, required);
36 | media:Media (id: 1, required);
37 | }
38 |
39 | root_type MediaContent;
--------------------------------------------------------------------------------
/tpc/schema/media.proto:
--------------------------------------------------------------------------------
1 | // See README.txt for information and build instructions.
2 |
3 | package serializers.protobuf.media;
4 |
5 | option java_package = "serializers.protobuf.media";
6 | option java_outer_classname = "MediaContentHolder";
7 | option optimize_for = SPEED;
8 |
9 | message Image {
10 | required string uri = 1; //url to the thumbnail
11 | optional string title = 2; //used in the html ALT
12 | required int32 width = 3; // of the image
13 | required int32 height = 4; // of the image
14 | enum Size {
15 | SMALL = 0;
16 | LARGE = 1;
17 | }
18 | required Size size = 5; // of the image (in relative terms, provided by cnbc for example)
19 | }
20 |
21 | message Media {
22 | required string uri = 1; //uri to the video, may not be an actual URL
23 | optional string title = 2; //used in the html ALT
24 | required int32 width = 3; // of the video
25 | required int32 height = 4; // of the video
26 | required string format = 5; //avi, jpg, youtube, cnbc, audio/mpeg formats ...
27 | required int64 duration = 6; //time in miliseconds
28 | required int64 size = 7; //file size
29 | optional int32 bitrate = 8; //video
30 | repeated string person = 9; //name of a person featured in the video
31 | enum Player {
32 | JAVA = 0;
33 | FLASH = 1;
34 | }
35 | required Player player = 10; //in case of a player specific media
36 | optional string copyright = 11;//media copyright
37 | }
38 |
39 | message MediaContent {
40 | repeated Image image = 1;
41 | required Media media = 2;
42 | }
43 |
--------------------------------------------------------------------------------
/tpc/schema/media.proto.jackson:
--------------------------------------------------------------------------------
1 | // See README.txt for information and build instructions.
2 |
3 | package serializers.protobuf.media;
4 |
5 | option java_package = "serializers.protobuf.media";
6 | option java_outer_classname = "MediaContentHolder";
7 | option optimize_for = SPEED;
8 |
9 | message Image {
10 | required string uri = 1; //url to the thumbnail
11 | optional string title = 2; //used in the html ALT
12 | required int32 width = 3; // of the image
13 | required int32 height = 4; // of the image
14 | enum Size {
15 | SMALL = 0;
16 | LARGE = 1;
17 | }
18 | required Size size = 5; // of the image (in relative terms, provided by cnbc for example)
19 | }
20 |
21 | message Media {
22 | required string uri = 1; //uri to the video, may not be an actual URL
23 | optional string title = 2; //used in the html ALT
24 | required int32 width = 3; // of the video
25 | required int32 height = 4; // of the video
26 | required string format = 5; //avi, jpg, youtube, cnbc, audio/mpeg formats ...
27 | required int64 duration = 6; //time in miliseconds
28 | required int64 size = 7; //file size
29 | optional int32 bitrate = 8; //video
30 | repeated string persons = 9; //names of persons featured in the video
31 | enum Player {
32 | JAVA = 0;
33 | FLASH = 1;
34 | }
35 | required Player player = 10; //in case of a player specific media
36 | optional string copyright = 11;//media copyright
37 | }
38 |
39 | message MediaContent {
40 | repeated Image images = 1;
41 | required Media media = 2;
42 | }
43 |
--------------------------------------------------------------------------------
/tpc/schema/media.protostuff.proto:
--------------------------------------------------------------------------------
1 | // See README.txt for information and build instructions.
2 |
3 | package serializers.protostuff.media;
4 |
5 | option java_package = "serializers.protostuff.media";
6 | option java_outer_classname = "MediaContentHolder";
7 | option optimize_for = SPEED;
8 |
9 | message Image {
10 | required string uri = 1; //url to the thumbnail
11 | optional string title = 2; //used in the html ALT
12 | required int32 width = 3; // of the image
13 | required int32 height = 4; // of the image
14 | enum Size {
15 | SMALL = 0;
16 | LARGE = 1;
17 | }
18 | required Size size = 5; // of the image (in relative terms, provided by cnbc for example)
19 | }
20 |
21 | message Media {
22 | required string uri = 1; //uri to the video, may not be an actual URL
23 | optional string title = 2; //used in the html ALT
24 | required int32 width = 3; // of the video
25 | required int32 height = 4; // of the video
26 | required string format = 5; //avi, jpg, youtube, cnbc, audio/mpeg formats ...
27 | required int64 duration = 6; //time in miliseconds
28 | required int64 size = 7; //file size
29 | optional int32 bitrate = 8; //video
30 | repeated string person = 9; //name of a person featured in the video
31 | enum Player {
32 | JAVA = 0;
33 | FLASH = 1;
34 | }
35 | required Player player = 10; //in case of a player specific media
36 | optional string copyright = 11;//media copyright
37 | }
38 |
39 | message MediaContent {
40 | repeated Image image = 1;
41 | required Media media = 2;
42 | }
43 |
--------------------------------------------------------------------------------
/tpc/schema/media.thrift:
--------------------------------------------------------------------------------
1 | namespace java serializers.thrift.media
2 |
3 | typedef i32 int
4 | typedef i64 long
5 |
6 | enum Size {
7 | SMALL = 0,
8 | LARGE = 1,
9 | }
10 |
11 | enum Player {
12 | JAVA = 0,
13 | FLASH = 1,
14 | }
15 |
16 | /**
17 | * Some comment...
18 | */
19 | struct Image {
20 | 1: string uri, //url to the images
21 | 2: optional string title,
22 | 3: required int width,
23 | 4: required int height,
24 | 5: required Size size,
25 | }
26 |
27 | struct Media {
28 | 1: string uri, //url to the thumbnail
29 | 2: optional string title,
30 | 3: required int width,
31 | 4: required int height,
32 | 5: required string format,
33 | 6: required long duration,
34 | 7: required long size,
35 | 8: optional int bitrate,
36 | 9: required list person,
37 | 10: required Player player,
38 | 11: optional string copyright,
39 | }
40 |
41 | struct MediaContent {
42 | 1: required list image,
43 | 2: required Media media,
44 | }
45 |
--------------------------------------------------------------------------------
/tpc/src/data/ReprUtil.java:
--------------------------------------------------------------------------------
1 | package data;
2 |
3 | public class ReprUtil
4 | {
5 | public static String repr(String s)
6 | {
7 | if (s == null) return "null";
8 | return '"' + s + '"';
9 | }
10 |
11 | public static String repr(Iterable it)
12 | {
13 | StringBuilder buf = new StringBuilder();
14 | buf.append('[');
15 | String sep = "";
16 | for (String s : it) {
17 | buf.append(sep); sep = ", ";
18 | buf.append(repr(s));
19 | }
20 | buf.append(']');
21 | return buf.toString();
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/tpc/src/data/media/Image.java:
--------------------------------------------------------------------------------
1 | package data.media;
2 |
3 | import com.dslplatform.json.CompiledJson;
4 | import com.dslplatform.json.JsonAttribute;
5 |
6 | import javax.xml.bind.annotation.XmlAccessType;
7 | import javax.xml.bind.annotation.XmlAccessorType;
8 |
9 | import static data.ReprUtil.repr;
10 |
11 | @XmlAccessorType(XmlAccessType.FIELD)
12 | @CompiledJson(formats = {CompiledJson.Format.ARRAY, CompiledJson.Format.OBJECT})
13 | public class Image implements java.io.Serializable
14 | {
15 | private static final long serialVersionUID = 1L;
16 |
17 | public enum Size {
18 | SMALL, LARGE
19 | }
20 |
21 | public String uri;
22 |
23 | public String title; // Can be null
24 | public int width;
25 | public int height;
26 | public Size size;
27 |
28 | public Image() {}
29 |
30 | public Image (String uri, String title, int width, int height, Size size) {
31 | this.height = height;
32 | this.title = title;
33 | this.uri = uri;
34 | this.width = width;
35 | this.size = size;
36 | }
37 |
38 | @Override
39 | public boolean equals(Object o)
40 | {
41 | if (this == o) return true;
42 | if (o == null || getClass() != o.getClass()) return false;
43 |
44 | Image image = (Image) o;
45 |
46 | if (height != image.height) return false;
47 | if (width != image.width) return false;
48 | if (size != image.size) return false;
49 | if (title != null ? !title.equals(image.title) : image.title != null) return false;
50 | if (uri != null ? !uri.equals(image.uri) : image.uri != null) return false;
51 |
52 | return true;
53 | }
54 |
55 | @Override
56 | public int hashCode()
57 | {
58 | int result = uri != null ? uri.hashCode() : 0;
59 | result = 31 * result + (title != null ? title.hashCode() : 0);
60 | result = 31 * result + width;
61 | result = 31 * result + height;
62 | result = 31 * result + (size != null ? size.hashCode() : 0);
63 | return result;
64 | }
65 |
66 | public String toString () {
67 | StringBuilder sb = new StringBuilder();
68 | sb.append("[Image ");
69 | sb.append("uri=").append(repr(uri));
70 | sb.append(", title=").append(repr(title));
71 | sb.append(", width=").append(width);
72 | sb.append(", height=").append(height);
73 | sb.append(", size=").append(size);
74 | sb.append("]");
75 | return sb.toString();
76 | }
77 |
78 | public void setUri(String uri) {
79 | this.uri = uri;
80 | }
81 |
82 | public void setTitle(String title) {
83 | this.title = title;
84 | }
85 |
86 | public void setWidth(int width) {
87 | this.width = width;
88 | }
89 |
90 | public void setHeight(int height) {
91 | this.height = height;
92 | }
93 |
94 | public void setSize(Size size) {
95 | this.size = size;
96 | }
97 |
98 | @JsonAttribute(index = 1)
99 | public String getUri() {
100 | return uri;
101 | }
102 |
103 | @JsonAttribute(index = 2)
104 | public String getTitle() {
105 | return title;
106 | }
107 |
108 | @JsonAttribute(index = 3)
109 | public int getWidth() {
110 | return width;
111 | }
112 |
113 | @JsonAttribute(index = 4)
114 | public int getHeight() {
115 | return height;
116 | }
117 |
118 | @JsonAttribute(index = 5)
119 | public Size getSize() {
120 | return size;
121 | }
122 | }
123 |
--------------------------------------------------------------------------------
/tpc/src/data/media/MediaContent.java:
--------------------------------------------------------------------------------
1 | package data.media;
2 |
3 | import com.dslplatform.json.CompiledJson;
4 | import com.dslplatform.json.JsonAttribute;
5 |
6 | import javax.xml.bind.annotation.XmlAccessType;
7 | import javax.xml.bind.annotation.XmlAccessorType;
8 | import javax.xml.bind.annotation.XmlRootElement;
9 | import java.util.List;
10 |
11 | @SuppressWarnings("serial")
12 | @XmlRootElement
13 | @XmlAccessorType(XmlAccessType.FIELD)
14 | @CompiledJson(formats = {CompiledJson.Format.ARRAY, CompiledJson.Format.OBJECT})
15 | public class MediaContent implements java.io.Serializable
16 | {
17 | public Media media;
18 | public List images;
19 |
20 | public MediaContent() {}
21 |
22 | public MediaContent (Media media, List images) {
23 | this.media = media;
24 | this.images = images;
25 | }
26 |
27 | @Override
28 | public boolean equals(Object o)
29 | {
30 | if (this == o) return true;
31 | if (o == null || getClass() != o.getClass()) return false;
32 |
33 | MediaContent that = (MediaContent) o;
34 |
35 | if (images != null ? !images.equals(that.images) : that.images != null) return false;
36 | if (media != null ? !media.equals(that.media) : that.media != null) return false;
37 |
38 | return true;
39 | }
40 |
41 | @Override
42 | public int hashCode()
43 | {
44 | int result = media != null ? media.hashCode() : 0;
45 | result = 31 * result + (images != null ? images.hashCode() : 0);
46 | return result;
47 | }
48 |
49 | public String toString() {
50 | StringBuilder sb = new StringBuilder();
51 | sb.append("[MediaContent: ");
52 | sb.append("media=").append(media);
53 | sb.append(", images=").append(images);
54 | sb.append("]");
55 | return sb.toString();
56 | }
57 |
58 | public void setMedia(Media media) {
59 | this.media = media;
60 | }
61 |
62 | public void setImages(List images) {
63 | this.images = images;
64 | }
65 |
66 | @JsonAttribute(index = 1)
67 | public Media getMedia() {
68 | return media;
69 | }
70 |
71 | @JsonAttribute(index = 2)
72 | public List getImages() {
73 | return images;
74 | }
75 | }
76 |
--------------------------------------------------------------------------------
/tpc/src/data/media/MediaTransformer.java:
--------------------------------------------------------------------------------
1 | package data.media;
2 |
3 | import serializers.Transformer;
4 |
5 | public abstract class MediaTransformer extends Transformer
6 | {
7 | public MediaContent[] sourceArray(int size) { return new MediaContent[size]; }
8 |
9 | // just defined to work around Scala issue
10 | public B[] resultArray(int size) { throw new UnsupportedOperationException("Please implement for "+getClass().getName()); }
11 | }
12 |
--------------------------------------------------------------------------------
/tpc/src/log4j.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/tpc/src/serializers/BenchmarkExporter.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | /**
4 | * Copyright (c) 2012, Ruediger Moeller. All rights reserved.
5 | *
6 | * This library is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * This library is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with this library; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 | * MA 02110-1301 USA
20 | *
21 | * Date: 09.03.14
22 | * Time: 10:09
23 | * To change this template use File | Settings | File Templates.
24 | */
25 |
26 | import java.util.ArrayList;
27 | import java.util.HashMap;
28 | import java.util.Iterator;
29 | import java.util.Set;
30 |
31 | /**
32 | * tweak to generate a string containing all registered benchmarks and extract bench feature data. called by run script
33 | */
34 | public class BenchmarkExporter extends BenchmarkRunner {
35 |
36 | String alltests = ""; // ',' separated
37 | HashMap featureMap = new HashMap(); // have to map back after running .. sigh
38 |
39 | public BenchmarkExporter() {
40 | runBenchmark(new String[0]);
41 | }
42 |
43 | protected void runBenchmark(String[] args)
44 | {
45 | TestGroups groups = new TestGroups();
46 | addTests(groups);
47 | Set media = groups.groupMap.get("media").entries.keySet();
48 | for (Iterator iterator = media.iterator(); iterator.hasNext(); ) {
49 | String next = iterator.next().trim();
50 | if ( ! next.equals("cks") && ! next.equals("cks-text") ) // used to read data, exclude
51 | alltests += next+ (iterator.hasNext() ? "," : "");
52 | SerFeatures features = groups.groupMap.get("media").entries.get(next).serializer.getFeatures();
53 | // System.out.println("serializer:"+next+" miscFeatures: "+miscFeatures);
54 | featureMap.put(next, features);
55 | }
56 | }
57 |
58 | public String getAlltests() {
59 | return alltests;
60 | }
61 |
62 | public HashMap getFeatureMap() {
63 | return featureMap;
64 | }
65 |
66 | public static void main(String arg[]) {
67 | System.out.println(new BenchmarkExporter().getAlltests());
68 | }
69 |
70 | }
71 |
--------------------------------------------------------------------------------
/tpc/src/serializers/Hessian.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | import java.io.*;
4 | import java.lang.reflect.Array;
5 |
6 | import data.media.MediaContent;
7 |
8 | import com.caucho.hessian.io.*;
9 |
10 | public class Hessian
11 | {
12 | public static void register(TestGroups groups)
13 | {
14 | groups.media.add(JavaBuiltIn.mediaTransformer, new HessianSerializer(MediaContent.class),
15 | new SerFeatures(
16 | SerFormat.BIN_CROSSLANG,
17 | SerGraph.FULL_GRAPH,
18 | SerClass.ZERO_KNOWLEDGE,""
19 | )
20 | );
21 | }
22 |
23 | // ------------------------------------------------------------
24 | // Serializer (just one)
25 |
26 | public final static class HessianSerializer extends Serializer
27 | {
28 | private final Class clz;
29 |
30 | public HessianSerializer(Class c) { clz = c; }
31 |
32 | public String getName() { return "hessian"; }
33 |
34 | @SuppressWarnings("unchecked")
35 | public T deserialize(byte[] array) throws Exception
36 | {
37 | ByteArrayInputStream in = new ByteArrayInputStream(array);
38 | Hessian2StreamingInput hin = new Hessian2StreamingInput(in);
39 | return (T) hin.readObject();
40 | }
41 |
42 | public byte[] serialize(T data) throws java.io.IOException
43 | {
44 | ByteArrayOutputStream out = outputStream(data);
45 | Hessian2StreamingOutput hout = new Hessian2StreamingOutput(out);
46 | hout.writeObject(data);
47 | return out.toByteArray();
48 | }
49 |
50 | @Override
51 | public final void serializeItems(T[] items, OutputStream out) throws Exception
52 | {
53 | Hessian2StreamingOutput hout = new Hessian2StreamingOutput(out);
54 | for (Object item : items) {
55 | hout.writeObject(item);
56 | }
57 | hout.flush();
58 | hout.close();
59 | }
60 |
61 | @SuppressWarnings("unchecked")
62 | @Override
63 | public T[] deserializeItems(InputStream in, int numberOfItems) throws Exception
64 | {
65 | Hessian2StreamingInput hin = new Hessian2StreamingInput(in);
66 | T[] result = (T[]) Array.newInstance(clz, numberOfItems);
67 | for (int i = 0; i < numberOfItems; ++i) {
68 | result[i] = (T) hin.readObject();
69 | }
70 | hin.close();
71 | return result;
72 | }
73 | }
74 | }
75 |
--------------------------------------------------------------------------------
/tpc/src/serializers/JBossSerialization.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | import java.io.ByteArrayInputStream;
4 | import java.io.ByteArrayOutputStream;
5 | import java.io.IOException;
6 | import java.io.InputStream;
7 | import java.io.OutputStream;
8 | import java.lang.reflect.Array;
9 |
10 | import org.jboss.serial.io.JBossObjectInputStream;
11 | import org.jboss.serial.io.JBossObjectOutputStream;
12 | import org.jboss.serial.util.StringUtilBuffer;
13 |
14 | import data.media.MediaContent;
15 |
16 | public class JBossSerialization {
17 |
18 | public static void register(final TestGroups groups) {
19 | groups.media.add(
20 | JavaBuiltIn.mediaTransformer,
21 | new JBossSerializationSerializer(MediaContent.class)
22 | ,
23 | new SerFeatures(
24 | SerFormat.BINARY,
25 | SerGraph.FULL_GRAPH,
26 | SerClass.ZERO_KNOWLEDGE,
27 | ""
28 | )
29 | );
30 | }
31 |
32 | private static final class JBossSerializationSerializer
33 | extends Serializer {
34 |
35 | private final Class clz;
36 |
37 | public JBossSerializationSerializer(final Class c) {
38 | clz = c;
39 | }
40 |
41 | @Override
42 | public String getName() {
43 | return "jboss-serialization";
44 | }
45 |
46 | @Override
47 | @SuppressWarnings("unchecked")
48 | public T deserialize(final byte[] array) throws Exception {
49 | ByteArrayInputStream bais = new ByteArrayInputStream(array);
50 | JBossObjectInputStream jois = new JBossObjectInputStream(
51 | bais,
52 | new StringUtilBuffer(BUFFER_SIZE, BUFFER_SIZE)
53 | );
54 | return (T) jois.readObject();
55 | }
56 |
57 | @Override
58 | public byte[] serialize(final T data) throws IOException {
59 | ByteArrayOutputStream baos = outputStream(data);
60 | JBossObjectOutputStream joos = new JBossObjectOutputStream(
61 | baos,
62 | new StringUtilBuffer(BUFFER_SIZE, BUFFER_SIZE)
63 | );
64 | joos.writeObject(data);
65 | return baos.toByteArray();
66 | }
67 |
68 | @Override
69 | public final void serializeItems(final T[] items, final OutputStream os)
70 | throws Exception {
71 | JBossObjectOutputStream jous = new JBossObjectOutputStream(os);
72 | for (Object item : items) {
73 | jous.writeObject(item);
74 | }
75 | jous.flush();
76 | jous.close();
77 | }
78 |
79 | @SuppressWarnings("unchecked")
80 | @Override
81 | public T[] deserializeItems(final InputStream in, final int numOfItems)
82 | throws Exception {
83 | JBossObjectInputStream jois = new JBossObjectInputStream(in);
84 | T[] result = (T[]) Array.newInstance(clz, numOfItems);
85 | for (int i = 0; i < numOfItems; ++i) {
86 | result[i] = (T) jois.readObject();
87 | }
88 | jois.close();
89 | return result;
90 | }
91 | }
92 | }
93 |
--------------------------------------------------------------------------------
/tpc/src/serializers/MiscFeatures.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | /**
4 | * Copyright (c) 2012, Ruediger Moeller. All rights reserved.
5 | *
6 | * This library is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * This library is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with this library; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 | * MA 02110-1301 USA
20 | *
21 | * Date: 11.03.14
22 | * Time: 19:48
23 | * To change this template use File | Settings | File Templates.
24 | */
25 |
26 | /**
27 | * describes misc miscFeatures a serializer might have.
28 | */
29 | public enum MiscFeatures {
30 | VERSIONING_BACKWARD_COMPATIBLE,
31 | VERSIONING_FORWARD_COMPATIBLE,
32 | VERSIONING_MISMATCH_DETECTION,
33 | CONTAINS_SCHEMA,
34 | OPTIMIZATION_BY_ANNOTATION
35 | }
36 |
--------------------------------------------------------------------------------
/tpc/src/serializers/SerClass.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | /**
4 | * Copyright (c) 2012, Ruediger Moeller. All rights reserved.
5 | *
6 | * This library is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * This library is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with this library; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 | * MA 02110-1301 USA
20 | *
21 | * Date: 09.03.14
22 | * Time: 11:31
23 | * To change this template use File | Settings | File Templates.
24 | */
25 | public enum SerClass {
26 | /**
27 | * nothing must be known in advance or language built-in (e.g. JDK Serializable)
28 | */
29 | ZERO_KNOWLEDGE,
30 | /**
31 | * requires knowledge in advance which classes can be serialized. Preconfiguration/Code Generation required
32 | */
33 | CLASSES_KNOWN,
34 | /**
35 | * requires knowledge in advance which classes can be serialized. Preconfiguration/Code Generation required
36 | * additionally field specific manually written read/write code
37 | */
38 | MANUAL_OPT,
39 | /**
40 | * add new category if you fall into this :-)
41 | */
42 | MISC
43 | }
44 |
--------------------------------------------------------------------------------
/tpc/src/serializers/SerFeatures.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | import java.util.EnumSet;
4 | import java.util.Formatter;
5 |
6 | /**
7 | * Copyright (c) 2012, Ruediger Moeller. All rights reserved.
8 | *
9 | * This library is free software; you can redistribute it and/or
10 | * modify it under the terms of the GNU Lesser General Public
11 | * License as published by the Free Software Foundation; either
12 | * version 2.1 of the License, or (at your option) any later version.
13 | *
14 | * This library is distributed in the hope that it will be useful,
15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
17 | * Lesser General Public License for more details.
18 | *
19 | * You should have received a copy of the GNU Lesser General Public
20 | * License along with this library; if not, write to the Free Software
21 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
22 | * MA 02110-1301 USA
23 | *
24 | * Date: 09.03.14
25 | * Time: 11:41
26 | * To change this template use File | Settings | File Templates.
27 | */
28 | public class SerFeatures {
29 | SerFormat format = SerFormat.MISC;
30 | SerGraph graph = SerGraph.UNKNOWN;
31 | SerClass clz = SerClass.MISC;
32 | // FIXME: should have used one EnumSet from the beginning so we could get rid of
33 | // SerFormat,SerGraph,SerClass .. sigh. Too lazy to change this now :-). ruediger
34 | EnumSet miscFeatures = EnumSet.noneOf(MiscFeatures.class);
35 | String description;
36 |
37 | public SerFeatures() {
38 | }
39 |
40 | public SerFeatures(SerFormat format, SerGraph graph, SerClass clz) {
41 | this.format = format;
42 | this.graph = graph;
43 | this.clz = clz;
44 | }
45 |
46 | public SerFeatures(SerFormat format, SerGraph graph, SerClass clz, String description) {
47 | this.format = format;
48 | this.graph = graph;
49 | this.clz = clz;
50 | this.description = description;
51 | }
52 |
53 | public SerFeatures(SerFormat format, SerGraph graph, SerClass clz, String description, EnumSet features) {
54 | this.format = format;
55 | this.graph = graph;
56 | this.clz = clz;
57 | this.miscFeatures = features;
58 | this.description = description;
59 | }
60 |
61 | public EnumSet getMiscFeatures() {
62 | return miscFeatures;
63 | }
64 |
65 | public void setMiscFeatures(EnumSet miscFeatures) {
66 | this.miscFeatures = miscFeatures;
67 | }
68 |
69 | public String toString(String name) {
70 | Formatter format = new Formatter().format(
71 | "%-34s %-15s %-14s %-10s %-60s",
72 | name,
73 | getClz(),
74 | getFormat(),
75 | getGraph(),
76 | getMiscFeatures()+" "+getDescription()
77 | );
78 | return format.toString();
79 | }
80 |
81 |
82 | public String getDescription() {
83 | return description;
84 | }
85 |
86 | public void setDescription(String description) {
87 | this.description = description;
88 | }
89 |
90 | public SerFormat getFormat() {
91 | return format;
92 | }
93 |
94 | public void setFormat(SerFormat format) {
95 | this.format = format;
96 | }
97 |
98 | public SerGraph getGraph() {
99 | return graph;
100 | }
101 |
102 | public void setGraph(SerGraph graph) {
103 | this.graph = graph;
104 | }
105 |
106 | public SerClass getClz() {
107 | return clz;
108 | }
109 |
110 | public void setClz(SerClass clz) {
111 | this.clz = clz;
112 | }
113 | }
114 |
--------------------------------------------------------------------------------
/tpc/src/serializers/SerFormat.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | /**
4 | * Copyright (c) 2012, Ruediger Moeller. All rights reserved.
5 | *
6 | * This library is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * This library is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with this library; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 | * MA 02110-1301 USA
20 | *
21 | * Date: 09.03.14
22 | * Time: 11:29
23 | */
24 | public enum SerFormat {
25 | /**
26 | * unspecified binary format (e.g. JDK serialization)
27 | */
28 | BINARY,
29 | /**
30 | * specified binary format which might be read by another language/implementation
31 | */
32 | BIN_CROSSLANG,
33 | /**
34 | * text based JSon format
35 | */
36 | JSON,
37 | /**
38 | * text based XML format
39 | */
40 | XML,
41 | /**
42 | * none of the above
43 | */
44 | MISC
45 | }
46 |
47 |
--------------------------------------------------------------------------------
/tpc/src/serializers/SerGraph.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | /**
4 | * Copyright (c) 2012, Ruediger Moeller. All rights reserved.
5 | *
6 | * This library is free software; you can redistribute it and/or
7 | * modify it under the terms of the GNU Lesser General Public
8 | * License as published by the Free Software Foundation; either
9 | * version 2.1 of the License, or (at your option) any later version.
10 | *
11 | * This library is distributed in the hope that it will be useful,
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 | * Lesser General Public License for more details.
15 | *
16 | * You should have received a copy of the GNU Lesser General Public
17 | * License along with this library; if not, write to the Free Software
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 | * MA 02110-1301 USA
20 | *
21 | * Date: 09.03.14
22 | * Time: 11:36
23 | * To change this template use File | Settings | File Templates.
24 | */
25 | public enum SerGraph {
26 | /**
27 | * cannot process object graphs containing cyclic references (flat tree only)
28 | */
29 | FLAT_TREE,
30 | /**
31 | * capable of read/write fully linked object graphs with reference restauration
32 | */
33 | FULL_GRAPH,
34 | UNKNOWN
35 | }
36 |
--------------------------------------------------------------------------------
/tpc/src/serializers/Serializer.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | import java.io.*;
4 |
5 | public abstract class Serializer
6 | {
7 | /**
8 | * Buffer size for serializers. Defaults to 1024 and can be changed
9 | * via system properties. Minimum set to 256.
10 | */
11 | public static final int BUFFER_SIZE = Math.max(
12 | Integer.getInteger("buffer_size", 1024), 256);
13 |
14 | public abstract S deserialize(byte[] array) throws Exception;
15 | public abstract byte[] serialize(S content) throws Exception;
16 | public abstract String getName();
17 |
18 | SerFeatures features = new SerFeatures(); // ruediger: everything misc by default.
19 |
20 | public ByteArrayOutputStream outputStream (S content) {
21 | return new ByteArrayOutputStream(BUFFER_SIZE);
22 | }
23 |
24 | public SerFeatures getFeatures() {
25 | return features;
26 | }
27 |
28 | public void setFeatures(SerFeatures features) {
29 | this.features = features;
30 | }
31 |
32 | // And then bit bigger default when serializing a list or array
33 | public ByteArrayOutputStream outputStreamForList (S[] items) {
34 | return new ByteArrayOutputStream(BUFFER_SIZE * items.length);
35 | }
36 |
37 | // Multi-item interfaces
38 |
39 | public S[] deserializeItems(InputStream in, int numberOfItems) throws Exception {
40 | throw new UnsupportedOperationException("Not implemented");
41 | }
42 |
43 | public void serializeItems(S[] items, OutputStream out) throws Exception {
44 | throw new UnsupportedOperationException("Not implemented");
45 | }
46 |
47 | @SuppressWarnings("resource")
48 | public final byte[] serializeAsBytes(S[] items) throws Exception {
49 | ByteArrayOutputStream bytes = outputStreamForList(items);
50 | serializeItems(items, bytes);
51 | return bytes.toByteArray();
52 | }
53 |
54 | // // // Helper methods
55 |
56 | protected byte[] readAll(InputStream in) throws IOException
57 | {
58 | ByteArrayOutputStream bytes = new ByteArrayOutputStream(4000);
59 | byte[] buffer = new byte[4000];
60 | int count;
61 |
62 | while ((count = in.read(buffer)) >= 0) {
63 | bytes.write(buffer, 0, count);
64 | }
65 | in.close();
66 | return bytes.toByteArray();
67 | }
68 | }
69 |
--------------------------------------------------------------------------------
/tpc/src/serializers/SimpleClassLoader.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | import java.io.*;
4 | import java.util.*;
5 | import java.util.zip.*;
6 |
7 | /**
8 | * Class loader to use for loading non-shared implementation classes. This is necessary so
9 | * that implementation classes can be loaded in, and as importantly, swapped out,
10 | * before and after test run.
11 | *
12 | * @author tatu
13 | */
14 | public class SimpleClassLoader
15 | extends ClassLoader
16 | {
17 | private final HashMap loadedByteCode = new HashMap();
18 |
19 | public SimpleClassLoader(ClassLoader parent, File dir) throws IOException
20 | {
21 | ByteArrayOutputStream bytes = new ByteArrayOutputStream();
22 | byte[] buffer = new byte[8000];
23 |
24 | for (File file : dir.listFiles()) {
25 | if (!file.getName().endsWith(".jar")) continue;
26 | ZipInputStream zis = new ZipInputStream(new FileInputStream(file));
27 | ZipEntry entry;
28 |
29 | while ((entry = zis.getNextEntry()) != null) {
30 | String name = entry.getName();
31 | if (name.endsWith(".class")) {
32 | // strip out ".class"; replace '/' with '.'
33 | String className = name.substring(0, name.length()-6);
34 | className = className.replace('/', '.');
35 | byte[] data = readAll(zis, buffer, bytes);
36 | if (loadedByteCode.put(name, data) != null) {
37 | throw new IllegalArgumentException("Duplicate class '"+className+"' (from jar '"+file.getPath()+"')");
38 | }
39 | }
40 | }
41 | }
42 | }
43 |
44 | @Override
45 | public Class> findClass(String name)
46 | {
47 | byte[] bytecode = loadedByteCode.get(name);
48 | if (bytecode == null) return null;
49 | return defineClass(name, bytecode, 0, bytecode.length);
50 | }
51 |
52 | private final byte[] readAll(InputStream in, byte[] buffer, ByteArrayOutputStream bytes) throws IOException
53 | {
54 | bytes.reset();
55 |
56 | int count;
57 |
58 | while ((count = in.read(buffer)) > 0) {
59 | bytes.write(buffer, 0, count);
60 | }
61 | return bytes.toByteArray();
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/tpc/src/serializers/TestCase.java:
--------------------------------------------------------------------------------
1 | package serializers;
2 |
3 | public abstract class TestCase
4 | {
5 | /**
6 | * @return avg time cost every iteration, measure in nanosecond unit
7 | */
8 | public abstract double run(Transformer transformer, Serializer