PageRenderTime 56ms CodeModel.GetById 29ms RepoModel.GetById 0ms app.codeStats 1ms

/tpc/src/serializers/BenchmarkRunner.java

https://github.com/muga/jvm-serializers
Java | 117 lines | 93 code | 8 blank | 16 comment | 0 complexity | 78472d489aa0f6e979c2fb7fdfd861ac MD5 | raw file
  1. package serializers;
  2. import java.io.*;
  3. import java.net.URLEncoder;
  4. import java.util.*;
  5. import java.util.regex.Pattern;
  6. import java.util.zip.DeflaterOutputStream;
  7. import serializers.BenchmarkBase.Params;
  8. import serializers.cks.CksBinary;
  9. import serializers.cks.CksText;
  10. import serializers.jackson.*;
  11. import serializers.json.JsonGsonDatabind;
  12. import serializers.json.JsonArgoTree;
  13. import serializers.json.FastJSONDatabind;
  14. import serializers.json.FlexjsonDatabind;
  15. import serializers.json.JsonGsonManual;
  16. import serializers.json.JsonGsonTree;
  17. import serializers.json.JsonDotOrgManualTree;
  18. import serializers.json.JsonLibJsonDatabind;
  19. import serializers.json.JsonPathDeserializerOnly;
  20. import serializers.json.JsonSimpleManualTree;
  21. import serializers.json.JsonSimpleWithContentHandler;
  22. import serializers.json.JsonSmartManualTree;
  23. import serializers.json.JsonTwoLattes;
  24. import serializers.json.JsonijJpath;
  25. import serializers.json.JsonijManualTree;
  26. import serializers.json.JsonSvensonDatabind;
  27. import serializers.protobuf.ActiveMQProtobuf;
  28. import serializers.protobuf.Protobuf;
  29. import serializers.protostuff.Protostuff;
  30. import serializers.protostuff.ProtostuffJson;
  31. import serializers.protostuff.ProtostuffSmile;
  32. import serializers.xml.XmlJavolution;
  33. import serializers.xml.XmlStax;
  34. import serializers.xml.XmlXStream;
  35. /**
  36. * Full test of various codecs, using a single <code>MediaItem</code>
  37. * as test data.
  38. */
  39. public class BenchmarkRunner extends MediaItemBenchmark
  40. {
  41. public static void main(String[] args) {
  42. new BenchmarkRunner().runBenchmark(args);
  43. }
  44. @Override
  45. protected void addTests(TestGroups groups)
  46. {
  47. // Binary Formats; language-specific ones
  48. JavaBuiltIn.register(groups);
  49. JavaManual.register(groups);
  50. Scala.register(groups);
  51. // hessian, kryo and wobly are Java object serializations
  52. Hessian.register(groups);
  53. Kryo.register(groups);
  54. Wobly.register(groups);
  55. // Binary formats, generic: protobuf, thrift, avro, CKS, msgpack
  56. Protobuf.register(groups);
  57. ActiveMQProtobuf.register(groups);
  58. Protostuff.register(groups);
  59. Thrift.register(groups);
  60. AvroSpecific.register(groups);
  61. AvroGeneric.register(groups);
  62. CksBinary.register(groups);
  63. MsgPack.register(groups);
  64. // JSON
  65. JacksonJsonManual.register(groups);
  66. JacksonJsonDatabind.register(groups);
  67. JacksonJsonDatabindWithStrings.register(groups);
  68. JacksonJsonAfterburner.register(groups); // databind with bytecode generation (faster)
  69. JacksonJsonTree.register(groups);
  70. JacksonJsonTreeWithStrings.register(groups);
  71. JsonTwoLattes.register(groups);
  72. ProtostuffJson.register(groups);
  73. // too slow, why bother:
  74. // ProtobufJson.register(groups);
  75. JsonGsonManual.register(groups);
  76. JsonGsonTree.register(groups);
  77. JsonGsonDatabind.register(groups);
  78. JsonSvensonDatabind.register(groups);
  79. FlexjsonDatabind.register(groups);
  80. JsonLibJsonDatabind.register(groups);
  81. FastJSONDatabind.register(groups);
  82. JsonSimpleWithContentHandler.register(groups);
  83. JsonSimpleManualTree.register(groups);
  84. JsonSmartManualTree.register(groups);
  85. JsonDotOrgManualTree.register(groups);
  86. JsonijJpath.register(groups);
  87. JsonijManualTree.register(groups);
  88. JsonArgoTree.register(groups);
  89. JsonPathDeserializerOnly.register(groups);
  90. // Then JSON-like
  91. // CKS text is textual JSON-like format
  92. CksText.register(groups);
  93. // then binary variants
  94. // Smile is 1-to-1 binary JSON serialization
  95. JacksonSmileManual.register(groups);
  96. JacksonSmileDatabind.register(groups);
  97. JacksonSmileAfterburner.register(groups); // databind with bytecode generation (faster)
  98. ProtostuffSmile.register(groups);
  99. // BSON is JSON-like format with extended datatypes
  100. JacksonBsonManual.register(groups);
  101. JacksonBsonDatabind.register(groups);
  102. MongoDB.register(groups);
  103. // XML-based formats.
  104. XmlStax.register(groups, true, true, true); // woodstox/aalto/fast-infoset
  105. XmlXStream.register(groups);
  106. JacksonXmlDatabind.register(groups);
  107. XmlJavolution.register(groups);
  108. }
  109. }