Skip to content
This repository has been archived by the owner on Sep 27, 2022. It is now read-only.

Add jackson-cbor, jackson-smile, jsoniter-scala, and kryo-macros #8

Closed
wants to merge 8 commits into from

Conversation

plokhotnyuk
Copy link

@plokhotnyuk plokhotnyuk commented Mar 16, 2018

It looks that jsoniter-scala is quite competitive with binary protocol libraries...

Below are results of benchmarks that I got on the following environment:
Intel® Core™ i7-7700 CPU @ 3.6GHz (max 4.2GHz), RAM 16Gb DDR4-2400, Ubuntu 16.04, Linux desktop 4.13.0-32-generic, Oracle JDK 64-bit (builds 1.8.0_161-b12)

Benchmark                                              Mode  Cnt        Score       Error  Units
BooPickleBenchmark.both_events_1k                      avgt    5     3450,619 ±    35,127  ns/op
BooPickleBenchmark.both_events_2k                      avgt    5     6446,389 ±    74,395  ns/op
BooPickleBenchmark.both_events_4k                      avgt    5    11461,712 ±   186,278  ns/op
BooPickleBenchmark.both_events_64k                     avgt    5   233074,410 ± 12987,667  ns/op
BooPickleBenchmark.both_events_8k                      avgt    5    22646,028 ±   200,936  ns/op
BooPickleBenchmark.both_site_1k                        avgt    5     2563,058 ±    20,366  ns/op
BooPickleBenchmark.both_site_2k                        avgt    5     4359,488 ±    42,384  ns/op
BooPickleBenchmark.both_site_4k                        avgt    5     7851,280 ±    88,465  ns/op
BooPickleBenchmark.both_site_64k                       avgt    5   131988,060 ±  2174,844  ns/op
BooPickleBenchmark.both_site_8k                        avgt    5    14781,549 ±   191,285  ns/op
BooPickleBenchmark.deserialization_events_1k           avgt    5     1204,041 ±    18,515  ns/op
BooPickleBenchmark.deserialization_events_2k           avgt    5     2561,871 ±    44,579  ns/op
BooPickleBenchmark.deserialization_events_4k           avgt    5     4892,084 ±    40,654  ns/op
BooPickleBenchmark.deserialization_events_64k          avgt    5   110586,297 ±  1452,856  ns/op
BooPickleBenchmark.deserialization_events_8k           avgt    5     9483,583 ±    68,032  ns/op
BooPickleBenchmark.deserialization_site_1k             avgt    5     1241,024 ±    14,864  ns/op
BooPickleBenchmark.deserialization_site_2k             avgt    5     2263,974 ±    25,013  ns/op
BooPickleBenchmark.deserialization_site_4k             avgt    5     4043,357 ±    53,494  ns/op
BooPickleBenchmark.deserialization_site_64k            avgt    5    72089,594 ±   450,784  ns/op
BooPickleBenchmark.deserialization_site_8k             avgt    5     7972,041 ±    61,709  ns/op
BooPickleBenchmark.serialization_events_1k             avgt    5     2212,062 ±    50,583  ns/op
BooPickleBenchmark.serialization_events_2k             avgt    5     3962,042 ±    38,559  ns/op
BooPickleBenchmark.serialization_events_4k             avgt    5     6985,897 ±   134,887  ns/op
BooPickleBenchmark.serialization_events_64k            avgt    5   125913,180 ±  3185,264  ns/op
BooPickleBenchmark.serialization_events_8k             avgt    5    14259,440 ±   205,401  ns/op
BooPickleBenchmark.serialization_site_1k               avgt    5     1274,825 ±    17,405  ns/op
BooPickleBenchmark.serialization_site_2k               avgt    5     2074,561 ±    17,818  ns/op
BooPickleBenchmark.serialization_site_4k               avgt    5     3841,006 ±    30,328  ns/op
BooPickleBenchmark.serialization_site_64k              avgt    5    58076,100 ±   391,784  ns/op
BooPickleBenchmark.serialization_site_8k               avgt    5     6553,085 ±    21,725  ns/op
ChillBenchmark.both_events_1k                          avgt    5    55145,447 ±   550,508  ns/op
ChillBenchmark.both_events_2k                          avgt    5    94355,452 ±   234,224  ns/op
ChillBenchmark.both_events_4k                          avgt    5   185246,762 ±   878,539  ns/op
ChillBenchmark.both_events_64k                         avgt    5  4015256,237 ±  5318,247  ns/op
ChillBenchmark.both_events_8k                          avgt    5   449980,725 ±  6176,116  ns/op
ChillBenchmark.both_site_1k                            avgt    5     8463,401 ±    56,665  ns/op
ChillBenchmark.both_site_2k                            avgt    5    13677,549 ±   218,548  ns/op
ChillBenchmark.both_site_4k                            avgt    5    20245,189 ±   307,053  ns/op
ChillBenchmark.both_site_64k                           avgt    5   284293,211 ±  2556,597  ns/op
ChillBenchmark.both_site_8k                            avgt    5    35253,973 ±   484,282  ns/op
ChillBenchmark.deserialization_events_1k               avgt    5    24911,667 ±   256,653  ns/op
ChillBenchmark.deserialization_events_2k               avgt    5    46713,479 ±   435,126  ns/op
ChillBenchmark.deserialization_events_4k               avgt    5    89936,461 ±  1293,805  ns/op
ChillBenchmark.deserialization_events_64k              avgt    5  2056433,528 ± 17173,367  ns/op
ChillBenchmark.deserialization_events_8k               avgt    5   217153,445 ±  1854,220  ns/op
ChillBenchmark.deserialization_site_1k                 avgt    5     4467,831 ±    32,776  ns/op
ChillBenchmark.deserialization_site_2k                 avgt    5     7617,308 ±   150,873  ns/op
ChillBenchmark.deserialization_site_4k                 avgt    5    11143,742 ±   116,309  ns/op
ChillBenchmark.deserialization_site_64k                avgt    5   128556,495 ±  1272,242  ns/op
ChillBenchmark.deserialization_site_8k                 avgt    5    18274,674 ±   270,201  ns/op
ChillBenchmark.serialization_events_1k                 avgt    5    24971,252 ±   283,798  ns/op
ChillBenchmark.serialization_events_2k                 avgt    5    49310,953 ±    91,444  ns/op
ChillBenchmark.serialization_events_4k                 avgt    5    89875,029 ±  1642,949  ns/op
ChillBenchmark.serialization_events_64k                avgt    5  1859059,973 ± 15515,156  ns/op
ChillBenchmark.serialization_events_8k                 avgt    5   203365,604 ±  1415,353  ns/op
ChillBenchmark.serialization_site_1k                   avgt    5     4494,158 ±    46,275  ns/op
ChillBenchmark.serialization_site_2k                   avgt    5     5743,002 ±    59,130  ns/op
ChillBenchmark.serialization_site_4k                   avgt    5     9926,090 ±    65,328  ns/op
ChillBenchmark.serialization_site_64k                  avgt    5   174696,251 ±  2338,915  ns/op
ChillBenchmark.serialization_site_8k                   avgt    5    16813,074 ±   195,625  ns/op
JacksonCborBenchmark.both_events_1k                    avgt    5    10839,618 ±    84,333  ns/op
JacksonCborBenchmark.both_events_2k                    avgt    5    21220,480 ±   136,722  ns/op
JacksonCborBenchmark.both_events_4k                    avgt    5    40155,175 ±   271,229  ns/op
JacksonCborBenchmark.both_events_64k                   avgt    5   814834,188 ±  9423,121  ns/op
JacksonCborBenchmark.both_events_8k                    avgt    5    88274,208 ±   997,027  ns/op
JacksonCborBenchmark.both_site_1k                      avgt    5     7304,444 ±    83,499  ns/op
JacksonCborBenchmark.both_site_2k                      avgt    5    12799,767 ±   103,021  ns/op
JacksonCborBenchmark.both_site_4k                      avgt    5    22710,787 ±   198,110  ns/op
JacksonCborBenchmark.both_site_64k                     avgt    5   335759,204 ±  4576,349  ns/op
JacksonCborBenchmark.both_site_8k                      avgt    5    46701,448 ±   416,806  ns/op
JacksonCborBenchmark.deserialization_events_1k         avgt    5     6153,287 ±    36,679  ns/op
JacksonCborBenchmark.deserialization_events_2k         avgt    5    11194,186 ±   141,829  ns/op
JacksonCborBenchmark.deserialization_events_4k         avgt    5    22746,482 ±   174,739  ns/op
JacksonCborBenchmark.deserialization_events_64k        avgt    5   440117,053 ±  6266,373  ns/op
JacksonCborBenchmark.deserialization_events_8k         avgt    5    47496,178 ±   629,033  ns/op
JacksonCborBenchmark.deserialization_site_1k           avgt    5     7030,991 ±    90,108  ns/op
JacksonCborBenchmark.deserialization_site_2k           avgt    5    11740,291 ±   216,285  ns/op
JacksonCborBenchmark.deserialization_site_4k           avgt    5    13487,839 ±   322,186  ns/op
JacksonCborBenchmark.deserialization_site_64k          avgt    5   270514,967 ±  3922,482  ns/op
JacksonCborBenchmark.deserialization_site_8k           avgt    5    27901,717 ±    79,510  ns/op
JacksonCborBenchmark.serialization_events_1k           avgt    5     4961,583 ±    61,844  ns/op
JacksonCborBenchmark.serialization_events_2k           avgt    5     8812,214 ±    89,100  ns/op
JacksonCborBenchmark.serialization_events_4k           avgt    5    17647,755 ±   221,065  ns/op
JacksonCborBenchmark.serialization_events_64k          avgt    5   380023,927 ±  7704,456  ns/op
JacksonCborBenchmark.serialization_events_8k           avgt    5    38063,184 ±   260,966  ns/op
JacksonCborBenchmark.serialization_site_1k             avgt    5     2035,910 ±    12,322  ns/op
JacksonCborBenchmark.serialization_site_2k             avgt    5     3876,117 ±    23,497  ns/op
JacksonCborBenchmark.serialization_site_4k             avgt    5     7802,512 ±   104,517  ns/op
JacksonCborBenchmark.serialization_site_64k            avgt    5   120989,727 ±  1269,889  ns/op
JacksonCborBenchmark.serialization_site_8k             avgt    5    15932,892 ±   196,500  ns/op
JacksonJsonBenchmark.both_events_1k                    avgt    5    13539,732 ±    95,793  ns/op
JacksonJsonBenchmark.both_events_2k                    avgt    5    25254,180 ±   305,306  ns/op
JacksonJsonBenchmark.both_events_4k                    avgt    5    53458,123 ±   448,359  ns/op
JacksonJsonBenchmark.both_events_64k                   avgt    5  1038500,060 ±  8169,951  ns/op
JacksonJsonBenchmark.both_events_8k                    avgt    5   114004,305 ±  1305,455  ns/op
JacksonJsonBenchmark.both_site_1k                      avgt    5     9939,893 ±    62,984  ns/op
JacksonJsonBenchmark.both_site_2k                      avgt    5    20814,423 ±   121,522  ns/op
JacksonJsonBenchmark.both_site_4k                      avgt    5    30332,873 ±   407,442  ns/op
JacksonJsonBenchmark.both_site_64k                     avgt    5   415525,159 ±  3766,657  ns/op
JacksonJsonBenchmark.both_site_8k                      avgt    5    60493,556 ±   756,249  ns/op
JacksonJsonBenchmark.deserialization_events_1k         avgt    5     6672,158 ±    29,488  ns/op
JacksonJsonBenchmark.deserialization_events_2k         avgt    5    13484,033 ±   169,383  ns/op
JacksonJsonBenchmark.deserialization_events_4k         avgt    5    26310,000 ±   356,418  ns/op
JacksonJsonBenchmark.deserialization_events_64k        avgt    5   488388,029 ±  9468,076  ns/op
JacksonJsonBenchmark.deserialization_events_8k         avgt    5    57145,304 ±   731,704  ns/op
JacksonJsonBenchmark.deserialization_site_1k           avgt    5     5413,975 ±    53,470  ns/op
JacksonJsonBenchmark.deserialization_site_2k           avgt    5    12997,027 ±   154,485  ns/op
JacksonJsonBenchmark.deserialization_site_4k           avgt    5    15836,744 ±   168,587  ns/op
JacksonJsonBenchmark.deserialization_site_64k          avgt    5   264458,315 ±  4095,683  ns/op
JacksonJsonBenchmark.deserialization_site_8k           avgt    5    51106,227 ±   503,786  ns/op
JacksonJsonBenchmark.serialization_events_1k           avgt    5     5888,240 ±    97,037  ns/op
JacksonJsonBenchmark.serialization_events_2k           avgt    5    11053,978 ±   140,158  ns/op
JacksonJsonBenchmark.serialization_events_4k           avgt    5    21462,922 ±   183,695  ns/op
JacksonJsonBenchmark.serialization_events_64k          avgt    5   429981,391 ±  7446,470  ns/op
JacksonJsonBenchmark.serialization_events_8k           avgt    5    48280,871 ±   911,055  ns/op
JacksonJsonBenchmark.serialization_site_1k             avgt    5     2827,547 ±    37,867  ns/op
JacksonJsonBenchmark.serialization_site_2k             avgt    5     5539,548 ±    39,695  ns/op
JacksonJsonBenchmark.serialization_site_4k             avgt    5    10962,007 ±   168,920  ns/op
JacksonJsonBenchmark.serialization_site_64k            avgt    5   169148,097 ±   949,888  ns/op
JacksonJsonBenchmark.serialization_site_8k             avgt    5    22112,516 ±   325,172  ns/op
JacksonSmileBenchmark.both_events_1k                   avgt    5    12286,453 ±   269,324  ns/op
JacksonSmileBenchmark.both_events_2k                   avgt    5    24420,364 ±   235,472  ns/op
JacksonSmileBenchmark.both_events_4k                   avgt    5    45908,622 ±   579,596  ns/op
JacksonSmileBenchmark.both_events_64k                  avgt    5   900497,043 ±  6534,855  ns/op
JacksonSmileBenchmark.both_events_8k                   avgt    5   102459,687 ±  1815,336  ns/op
JacksonSmileBenchmark.both_site_1k                     avgt    5    11611,557 ±   177,145  ns/op
JacksonSmileBenchmark.both_site_2k                     avgt    5    14060,264 ±   191,928  ns/op
JacksonSmileBenchmark.both_site_4k                     avgt    5    23834,209 ±   108,362  ns/op
JacksonSmileBenchmark.both_site_64k                    avgt    5   313727,677 ±  3567,220  ns/op
JacksonSmileBenchmark.both_site_8k                     avgt    5    64933,540 ±   369,511  ns/op
JacksonSmileBenchmark.deserialization_events_1k        avgt    5     6038,496 ±    28,165  ns/op
JacksonSmileBenchmark.deserialization_events_2k        avgt    5    11456,492 ±   153,663  ns/op
JacksonSmileBenchmark.deserialization_events_4k        avgt    5    23530,906 ±   181,592  ns/op
JacksonSmileBenchmark.deserialization_events_64k       avgt    5   445444,981 ±  5824,039  ns/op
JacksonSmileBenchmark.deserialization_events_8k        avgt    5    47501,683 ±   375,622  ns/op
JacksonSmileBenchmark.deserialization_site_1k          avgt    5     5017,437 ±    28,882  ns/op
JacksonSmileBenchmark.deserialization_site_2k          avgt    5    12286,832 ±   113,954  ns/op
JacksonSmileBenchmark.deserialization_site_4k          avgt    5    19819,315 ±   167,814  ns/op
JacksonSmileBenchmark.deserialization_site_64k         avgt    5   184901,169 ±  1161,975  ns/op
JacksonSmileBenchmark.deserialization_site_8k          avgt    5    28185,649 ±   216,073  ns/op
JacksonSmileBenchmark.serialization_events_1k          avgt    5     5399,927 ±   110,828  ns/op
JacksonSmileBenchmark.serialization_events_2k          avgt    5     9712,429 ±   101,139  ns/op
JacksonSmileBenchmark.serialization_events_4k          avgt    5    19420,602 ±    70,550  ns/op
JacksonSmileBenchmark.serialization_events_64k         avgt    5   401824,756 ± 11292,060  ns/op
JacksonSmileBenchmark.serialization_events_8k          avgt    5    42471,085 ±   542,553  ns/op
JacksonSmileBenchmark.serialization_site_1k            avgt    5     2265,605 ±    44,853  ns/op
JacksonSmileBenchmark.serialization_site_2k            avgt    5     4262,749 ±    44,905  ns/op
JacksonSmileBenchmark.serialization_site_4k            avgt    5     8420,590 ±    89,835  ns/op
JacksonSmileBenchmark.serialization_site_64k           avgt    5   128989,751 ±   947,153  ns/op
JacksonSmileBenchmark.serialization_site_8k            avgt    5    16551,416 ±   145,807  ns/op
JavaPbBenchmark.both_events_1k                         avgt    5     4195,848 ±    64,794  ns/op
JavaPbBenchmark.both_events_2k                         avgt    5     8954,837 ±   164,746  ns/op
JavaPbBenchmark.both_events_4k                         avgt    5    18082,529 ±   208,590  ns/op
JavaPbBenchmark.both_events_64k                        avgt    5   359622,794 ±  3842,535  ns/op
JavaPbBenchmark.both_events_8k                         avgt    5    35585,286 ±   422,577  ns/op
JavaPbBenchmark.both_site_1k                           avgt    5     4685,507 ±    40,855  ns/op
JavaPbBenchmark.both_site_2k                           avgt    5     8564,623 ±    62,515  ns/op
JavaPbBenchmark.both_site_4k                           avgt    5    14777,931 ±   103,540  ns/op
JavaPbBenchmark.both_site_64k                          avgt    5   257778,020 ±  5103,850  ns/op
JavaPbBenchmark.both_site_8k                           avgt    5    28689,604 ±   261,559  ns/op
JavaPbBenchmark.deserialization_events_1k              avgt    5     1873,605 ±    13,598  ns/op
JavaPbBenchmark.deserialization_events_2k              avgt    5     3910,111 ±    42,091  ns/op
JavaPbBenchmark.deserialization_events_4k              avgt    5     7799,085 ±   125,557  ns/op
JavaPbBenchmark.deserialization_events_64k             avgt    5   164701,611 ±  1987,760  ns/op
JavaPbBenchmark.deserialization_events_8k              avgt    5    15295,809 ±   138,493  ns/op
JavaPbBenchmark.deserialization_site_1k                avgt    5     2176,005 ±    32,095  ns/op
JavaPbBenchmark.deserialization_site_2k                avgt    5     3971,910 ±    54,837  ns/op
JavaPbBenchmark.deserialization_site_4k                avgt    5     6415,485 ±   109,688  ns/op
JavaPbBenchmark.deserialization_site_64k               avgt    5   109605,983 ±   996,222  ns/op
JavaPbBenchmark.deserialization_site_8k                avgt    5    12951,063 ±    90,928  ns/op
JavaPbBenchmark.serialization_events_1k                avgt    5     2152,703 ±    31,127  ns/op
JavaPbBenchmark.serialization_events_2k                avgt    5     4600,197 ±    59,991  ns/op
JavaPbBenchmark.serialization_events_4k                avgt    5     8669,373 ±   155,353  ns/op
JavaPbBenchmark.serialization_events_64k               avgt    5   203755,709 ±  2936,831  ns/op
JavaPbBenchmark.serialization_events_8k                avgt    5    17167,683 ±   164,594  ns/op
JavaPbBenchmark.serialization_site_1k                  avgt    5     2209,652 ±    26,377  ns/op
JavaPbBenchmark.serialization_site_2k                  avgt    5     3925,884 ±    71,776  ns/op
JavaPbBenchmark.serialization_site_4k                  avgt    5     6982,683 ±   111,750  ns/op
JavaPbBenchmark.serialization_site_64k                 avgt    5   148001,990 ±  2684,324  ns/op
JavaPbBenchmark.serialization_site_8k                  avgt    5    12417,454 ±   131,659  ns/op
JavaSerializationBenchmark.both_events_1k              avgt    5    72090,925 ±   397,930  ns/op
JavaSerializationBenchmark.both_events_2k              avgt    5   135345,882 ±  2956,199  ns/op
JavaSerializationBenchmark.both_events_4k              avgt    5   311611,883 ±  1800,628  ns/op
JavaSerializationBenchmark.both_events_64k             avgt    5  6468227,060 ± 46490,361  ns/op
JavaSerializationBenchmark.both_events_8k              avgt    5   744515,085 ±  4524,391  ns/op
JavaSerializationBenchmark.both_site_1k                avgt    5    52959,431 ±   270,987  ns/op
JavaSerializationBenchmark.both_site_2k                avgt    5    84790,139 ±   907,425  ns/op
JavaSerializationBenchmark.both_site_4k                avgt    5   111710,410 ±   917,557  ns/op
JavaSerializationBenchmark.both_site_64k               avgt    5   925712,095 ±  8895,392  ns/op
JavaSerializationBenchmark.both_site_8k                avgt    5   169909,189 ±  3209,794  ns/op
JavaSerializationBenchmark.deserialization_events_1k   avgt    5    56884,811 ±   682,231  ns/op
JavaSerializationBenchmark.deserialization_events_2k   avgt    5    98859,848 ±   429,700  ns/op
JavaSerializationBenchmark.deserialization_events_4k   avgt    5   238740,851 ±  1654,023  ns/op
JavaSerializationBenchmark.deserialization_events_64k  avgt    5  4912578,995 ± 41161,838  ns/op
JavaSerializationBenchmark.deserialization_events_8k   avgt    5   563889,043 ± 12983,568  ns/op
JavaSerializationBenchmark.deserialization_site_1k     avgt    5    40931,403 ±   828,302  ns/op
JavaSerializationBenchmark.deserialization_site_2k     avgt    5    59401,192 ±   937,590  ns/op
JavaSerializationBenchmark.deserialization_site_4k     avgt    5    70294,687 ±   460,101  ns/op
JavaSerializationBenchmark.deserialization_site_64k    avgt    5   436165,956 ±  2613,298  ns/op
JavaSerializationBenchmark.deserialization_site_8k     avgt    5    93730,508 ±  1325,073  ns/op
JavaSerializationBenchmark.serialization_events_1k     avgt    5    12606,614 ±    69,393  ns/op
JavaSerializationBenchmark.serialization_events_2k     avgt    5    25583,411 ±   233,329  ns/op
JavaSerializationBenchmark.serialization_events_4k     avgt    5    54831,288 ±   425,052  ns/op
JavaSerializationBenchmark.serialization_events_64k    avgt    5  1126449,032 ±  6156,025  ns/op
JavaSerializationBenchmark.serialization_events_8k     avgt    5   119950,910 ±  2229,959  ns/op
JavaSerializationBenchmark.serialization_site_1k       avgt    5     9823,478 ±   164,630  ns/op
JavaSerializationBenchmark.serialization_site_2k       avgt    5    16358,131 ±   249,566  ns/op
JavaSerializationBenchmark.serialization_site_4k       avgt    5    28152,959 ±   412,312  ns/op
JavaSerializationBenchmark.serialization_site_64k      avgt    5   503754,719 ±  4165,943  ns/op
JavaSerializationBenchmark.serialization_site_8k       avgt    5    60173,349 ±   438,367  ns/op
JavaThriftBenchmark.both_events_1k                     avgt    5     5178,204 ±    55,170  ns/op
JavaThriftBenchmark.both_events_2k                     avgt    5    10100,778 ±   170,748  ns/op
JavaThriftBenchmark.both_events_4k                     avgt    5    19777,314 ±   189,555  ns/op
JavaThriftBenchmark.both_events_64k                    avgt    5   434515,461 ±  5452,700  ns/op
JavaThriftBenchmark.both_events_8k                     avgt    5    40910,870 ±   530,695  ns/op
JavaThriftBenchmark.both_site_1k                       avgt    5     4737,938 ±    58,318  ns/op
JavaThriftBenchmark.both_site_2k                       avgt    5     8054,382 ±    76,117  ns/op
JavaThriftBenchmark.both_site_4k                       avgt    5    14818,712 ±   118,484  ns/op
JavaThriftBenchmark.both_site_64k                      avgt    5   270563,552 ±  2846,882  ns/op
JavaThriftBenchmark.both_site_8k                       avgt    5    29458,769 ±   232,222  ns/op
JavaThriftBenchmark.deserialization_events_1k          avgt    5     2102,039 ±     9,302  ns/op
JavaThriftBenchmark.deserialization_events_2k          avgt    5     4212,819 ±    76,761  ns/op
JavaThriftBenchmark.deserialization_events_4k          avgt    5     8364,335 ±   119,470  ns/op
JavaThriftBenchmark.deserialization_events_64k         avgt    5   171489,551 ±  6746,310  ns/op
JavaThriftBenchmark.deserialization_events_8k          avgt    5    16932,427 ±   301,150  ns/op
JavaThriftBenchmark.deserialization_site_1k            avgt    5     1905,254 ±    28,721  ns/op
JavaThriftBenchmark.deserialization_site_2k            avgt    5     3497,352 ±    70,086  ns/op
JavaThriftBenchmark.deserialization_site_4k            avgt    5     6250,256 ±    61,299  ns/op
JavaThriftBenchmark.deserialization_site_64k           avgt    5   110836,974 ±  1446,075  ns/op
JavaThriftBenchmark.deserialization_site_8k            avgt    5    12582,116 ±    82,755  ns/op
JavaThriftBenchmark.serialization_events_1k            avgt    5     2690,491 ±    40,102  ns/op
JavaThriftBenchmark.serialization_events_2k            avgt    5     5337,540 ±    38,423  ns/op
JavaThriftBenchmark.serialization_events_4k            avgt    5    10735,206 ±    85,429  ns/op
JavaThriftBenchmark.serialization_events_64k           avgt    5   247452,401 ±  3020,380  ns/op
JavaThriftBenchmark.serialization_events_8k            avgt    5    22738,176 ±   360,864  ns/op
JavaThriftBenchmark.serialization_site_1k              avgt    5     2084,021 ±    16,474  ns/op
JavaThriftBenchmark.serialization_site_2k              avgt    5     4138,009 ±    20,705  ns/op
JavaThriftBenchmark.serialization_site_4k              avgt    5     7969,529 ±   114,682  ns/op
JavaThriftBenchmark.serialization_site_64k             avgt    5   155304,467 ±  1005,161  ns/op
JavaThriftBenchmark.serialization_site_8k              avgt    5    15699,690 ±   173,919  ns/op
JsoniterScalaBenchmark.both_events_1k                  avgt    5     5421,865 ±    52,248  ns/op
JsoniterScalaBenchmark.both_events_2k                  avgt    5    10120,573 ±    48,744  ns/op
JsoniterScalaBenchmark.both_events_4k                  avgt    5    18661,752 ±   341,641  ns/op
JsoniterScalaBenchmark.both_events_64k                 avgt    5   457824,569 ± 11119,544  ns/op
JsoniterScalaBenchmark.both_events_8k                  avgt    5    38879,513 ±  1350,297  ns/op
JsoniterScalaBenchmark.both_site_1k                    avgt    5     3638,670 ±    48,588  ns/op
JsoniterScalaBenchmark.both_site_2k                    avgt    5     7924,660 ±   164,848  ns/op
JsoniterScalaBenchmark.both_site_4k                    avgt    5    14452,912 ±   189,742  ns/op
JsoniterScalaBenchmark.both_site_64k                   avgt    5   223421,723 ±  1650,878  ns/op
JsoniterScalaBenchmark.both_site_8k                    avgt    5    26711,608 ±   739,354  ns/op
JsoniterScalaBenchmark.deserialization_events_1k       avgt    5     3221,517 ±    40,655  ns/op
JsoniterScalaBenchmark.deserialization_events_2k       avgt    5     5787,137 ±   131,977  ns/op
JsoniterScalaBenchmark.deserialization_events_4k       avgt    5    11402,196 ±   115,461  ns/op
JsoniterScalaBenchmark.deserialization_events_64k      avgt    5   238135,354 ± 11723,840  ns/op
JsoniterScalaBenchmark.deserialization_events_8k       avgt    5    25913,963 ±   406,280  ns/op
JsoniterScalaBenchmark.deserialization_site_1k         avgt    5     2123,757 ±    41,472  ns/op
JsoniterScalaBenchmark.deserialization_site_2k         avgt    5     4407,491 ±    75,697  ns/op
JsoniterScalaBenchmark.deserialization_site_4k         avgt    5     8695,099 ±   164,358  ns/op
JsoniterScalaBenchmark.deserialization_site_64k        avgt    5   138679,223 ±  1070,909  ns/op
JsoniterScalaBenchmark.deserialization_site_8k         avgt    5    17578,634 ±   291,959  ns/op
JsoniterScalaBenchmark.serialization_events_1k         avgt    5     1870,319 ±    32,015  ns/op
JsoniterScalaBenchmark.serialization_events_2k         avgt    5     3587,744 ±    16,321  ns/op
JsoniterScalaBenchmark.serialization_events_4k         avgt    5     6503,567 ±    78,489  ns/op
JsoniterScalaBenchmark.serialization_events_64k        avgt    5   215918,413 ±  4438,669  ns/op
JsoniterScalaBenchmark.serialization_events_8k         avgt    5    12420,873 ±   117,121  ns/op
JsoniterScalaBenchmark.serialization_site_1k           avgt    5     1484,114 ±    29,861  ns/op
JsoniterScalaBenchmark.serialization_site_2k           avgt    5     3133,542 ±    36,795  ns/op
JsoniterScalaBenchmark.serialization_site_4k           avgt    5     5312,420 ±    61,694  ns/op
JsoniterScalaBenchmark.serialization_site_64k          avgt    5    88702,248 ±  2254,960  ns/op
JsoniterScalaBenchmark.serialization_site_8k           avgt    5    13084,559 ±   667,089  ns/op
KryoMacrosBenchmark.both_events_1k                     avgt    5     3251,992 ±    18,835  ns/op
KryoMacrosBenchmark.both_events_2k                     avgt    5     6745,606 ±   154,382  ns/op
KryoMacrosBenchmark.both_events_4k                     avgt    5    12571,031 ±   277,254  ns/op
KryoMacrosBenchmark.both_events_64k                    avgt    5   232131,678 ±  6375,622  ns/op
KryoMacrosBenchmark.both_events_8k                     avgt    5    24572,269 ±   434,143  ns/op
KryoMacrosBenchmark.both_site_1k                       avgt    5     2031,003 ±    25,914  ns/op
KryoMacrosBenchmark.both_site_2k                       avgt    5     3517,225 ±    56,135  ns/op
KryoMacrosBenchmark.both_site_4k                       avgt    5     6113,034 ±    82,816  ns/op
KryoMacrosBenchmark.both_site_64k                      avgt    5    78104,148 ±  1717,993  ns/op
KryoMacrosBenchmark.both_site_8k                       avgt    5     9112,799 ±    64,587  ns/op
KryoMacrosBenchmark.deserialization_events_1k          avgt    5     1749,861 ±    27,393  ns/op
KryoMacrosBenchmark.deserialization_events_2k          avgt    5     3498,893 ±    34,857  ns/op
KryoMacrosBenchmark.deserialization_events_4k          avgt    5     6407,848 ±    51,657  ns/op
KryoMacrosBenchmark.deserialization_events_64k         avgt    5   126163,880 ±  3589,761  ns/op
KryoMacrosBenchmark.deserialization_events_8k          avgt    5    12474,344 ±   125,238  ns/op
KryoMacrosBenchmark.deserialization_site_1k            avgt    5     1036,818 ±    35,330  ns/op
KryoMacrosBenchmark.deserialization_site_2k            avgt    5     2277,274 ±    37,437  ns/op
KryoMacrosBenchmark.deserialization_site_4k            avgt    5     3698,914 ±    35,912  ns/op
KryoMacrosBenchmark.deserialization_site_64k           avgt    5    49855,545 ±   560,575  ns/op
KryoMacrosBenchmark.deserialization_site_8k            avgt    5     5433,509 ±    77,735  ns/op
KryoMacrosBenchmark.serialization_events_1k            avgt    5     1427,867 ±    28,524  ns/op
KryoMacrosBenchmark.serialization_events_2k            avgt    5     2929,113 ±    56,457  ns/op
KryoMacrosBenchmark.serialization_events_4k            avgt    5     5986,238 ±   110,178  ns/op
KryoMacrosBenchmark.serialization_events_64k           avgt    5   104297,826 ±  1709,274  ns/op
KryoMacrosBenchmark.serialization_events_8k            avgt    5    11282,797 ±   129,952  ns/op
KryoMacrosBenchmark.serialization_site_1k              avgt    5      687,241 ±    10,794  ns/op
KryoMacrosBenchmark.serialization_site_2k              avgt    5     1422,826 ±    16,353  ns/op
KryoMacrosBenchmark.serialization_site_4k              avgt    5     2162,727 ±    24,873  ns/op
KryoMacrosBenchmark.serialization_site_64k             avgt    5    29452,169 ±   299,015  ns/op
KryoMacrosBenchmark.serialization_site_8k              avgt    5     3472,093 ±    67,862  ns/op
PicklingBenchmark.both_events_1k                       avgt    5    56413,090 ±  1242,319  ns/op
PicklingBenchmark.both_events_2k                       avgt    5   107807,184 ±  1382,124  ns/op
PicklingBenchmark.both_events_4k                       avgt    5   237333,091 ±  2594,399  ns/op
PicklingBenchmark.both_events_64k                      avgt    5  5237185,898 ± 61676,872  ns/op
PicklingBenchmark.both_events_8k                       avgt    5   567689,121 ±  6026,073  ns/op
PicklingBenchmark.both_site_1k                         avgt    5    22590,266 ±   173,636  ns/op
PicklingBenchmark.both_site_2k                         avgt    5    33634,589 ±   227,241  ns/op
PicklingBenchmark.both_site_4k                         avgt    5    64357,504 ±   460,568  ns/op
PicklingBenchmark.both_site_64k                        avgt    5  1126357,460 ±  8738,210  ns/op
PicklingBenchmark.both_site_8k                         avgt    5   151405,752 ±  1641,936  ns/op
PicklingBenchmark.deserialization_events_1k            avgt    5     9113,944 ±    60,430  ns/op
PicklingBenchmark.deserialization_events_2k            avgt    5    17448,440 ±   145,364  ns/op
PicklingBenchmark.deserialization_events_4k            avgt    5    38824,638 ±   365,951  ns/op
PicklingBenchmark.deserialization_events_64k           avgt    5   808118,898 ±  8268,414  ns/op
PicklingBenchmark.deserialization_events_8k            avgt    5    84794,201 ±   490,377  ns/op
PicklingBenchmark.deserialization_site_1k              avgt    5     9693,478 ±    40,917  ns/op
PicklingBenchmark.deserialization_site_2k              avgt    5    14329,804 ±   156,503  ns/op
PicklingBenchmark.deserialization_site_4k              avgt    5    27433,223 ±   559,654  ns/op
PicklingBenchmark.deserialization_site_64k             avgt    5   490009,499 ±  4356,866  ns/op
PicklingBenchmark.deserialization_site_8k              avgt    5    62139,140 ±   338,050  ns/op
PicklingBenchmark.serialization_events_1k              avgt    5    42992,273 ±   743,982  ns/op
PicklingBenchmark.serialization_events_2k              avgt    5    83967,127 ±   842,908  ns/op
PicklingBenchmark.serialization_events_4k              avgt    5   189759,666 ±  8256,152  ns/op
PicklingBenchmark.serialization_events_64k             avgt    5  4176150,060 ± 95116,255  ns/op
PicklingBenchmark.serialization_events_8k              avgt    5   461399,338 ± 17387,806  ns/op
PicklingBenchmark.serialization_site_1k                avgt    5    11468,469 ±   155,869  ns/op
PicklingBenchmark.serialization_site_2k                avgt    5    17561,058 ±   208,967  ns/op
PicklingBenchmark.serialization_site_4k                avgt    5    35590,384 ±   220,517  ns/op
PicklingBenchmark.serialization_site_64k               avgt    5   641277,611 ±  4008,262  ns/op
PicklingBenchmark.serialization_site_8k                avgt    5    86490,748 ±   566,073  ns/op
ScalaPbBenchmark.both_events_1k                        avgt    5     3923,281 ±    29,916  ns/op
ScalaPbBenchmark.both_events_2k                        avgt    5     7414,116 ±    28,604  ns/op
ScalaPbBenchmark.both_events_4k                        avgt    5    15241,942 ±   174,709  ns/op
ScalaPbBenchmark.both_events_64k                       avgt    5   303804,334 ±  1188,796  ns/op
ScalaPbBenchmark.both_events_8k                        avgt    5    31335,920 ±   528,048  ns/op
ScalaPbBenchmark.both_site_1k                          avgt    5     4271,506 ±    24,275  ns/op
ScalaPbBenchmark.both_site_2k                          avgt    5     7272,255 ±    78,674  ns/op
ScalaPbBenchmark.both_site_4k                          avgt    5    12669,205 ±    94,774  ns/op
ScalaPbBenchmark.both_site_64k                         avgt    5   176157,052 ±  2140,387  ns/op
ScalaPbBenchmark.both_site_8k                          avgt    5    25986,763 ±   183,835  ns/op
ScalaPbBenchmark.deserialization_events_1k             avgt    5     2502,676 ±    32,687  ns/op
ScalaPbBenchmark.deserialization_events_2k             avgt    5     4720,453 ±    34,027  ns/op
ScalaPbBenchmark.deserialization_events_4k             avgt    5     8658,827 ±    61,900  ns/op
ScalaPbBenchmark.deserialization_events_64k            avgt    5   193598,245 ±  4327,287  ns/op
ScalaPbBenchmark.deserialization_events_8k             avgt    5    19182,590 ±   186,881  ns/op
ScalaPbBenchmark.deserialization_site_1k               avgt    5     1837,689 ±     9,413  ns/op
ScalaPbBenchmark.deserialization_site_2k               avgt    5     3129,101 ±    31,235  ns/op
ScalaPbBenchmark.deserialization_site_4k               avgt    5     5247,453 ±    48,544  ns/op
ScalaPbBenchmark.deserialization_site_64k              avgt    5    95058,763 ±   584,609  ns/op
ScalaPbBenchmark.deserialization_site_8k               avgt    5    10241,470 ±   142,510  ns/op
ScalaPbBenchmark.serialization_events_1k               avgt    5     1205,008 ±    10,170  ns/op
ScalaPbBenchmark.serialization_events_2k               avgt    5     2526,896 ±    28,645  ns/op
ScalaPbBenchmark.serialization_events_4k               avgt    5     5327,955 ±    46,173  ns/op
ScalaPbBenchmark.serialization_events_64k              avgt    5   104403,222 ±  1833,035  ns/op
ScalaPbBenchmark.serialization_events_8k               avgt    5    10531,147 ±   118,146  ns/op
ScalaPbBenchmark.serialization_site_1k                 avgt    5     1546,153 ±    17,072  ns/op
ScalaPbBenchmark.serialization_site_2k                 avgt    5     2696,073 ±    26,601  ns/op
ScalaPbBenchmark.serialization_site_4k                 avgt    5     5374,712 ±    50,545  ns/op
ScalaPbBenchmark.serialization_site_64k                avgt    5    80902,800 ±   796,333  ns/op
ScalaPbBenchmark.serialization_site_8k                 avgt    5    11376,605 ±    76,363  ns/op
ScroogeBenchmark.both_events_1k                        avgt    5     5596,893 ±    32,521  ns/op
ScroogeBenchmark.both_events_2k                        avgt    5    11380,105 ±   124,680  ns/op
ScroogeBenchmark.both_events_4k                        avgt    5    22379,467 ±   233,129  ns/op
ScroogeBenchmark.both_events_64k                       avgt    5   485649,344 ±  6966,348  ns/op
ScroogeBenchmark.both_events_8k                        avgt    5    47509,110 ±   491,138  ns/op
ScroogeBenchmark.both_site_1k                          avgt    5     4923,606 ±    16,862  ns/op
ScroogeBenchmark.both_site_2k                          avgt    5     8710,272 ±    35,332  ns/op
ScroogeBenchmark.both_site_4k                          avgt    5    16879,166 ±   221,446  ns/op
ScroogeBenchmark.both_site_64k                         avgt    5   290547,058 ±  1320,635  ns/op
ScroogeBenchmark.both_site_8k                          avgt    5    35831,367 ±   287,148  ns/op
ScroogeBenchmark.deserialization_events_1k             avgt    5     2257,728 ±     6,174  ns/op
ScroogeBenchmark.deserialization_events_2k             avgt    5     4573,475 ±    29,183  ns/op
ScroogeBenchmark.deserialization_events_4k             avgt    5     8752,990 ±    90,608  ns/op
ScroogeBenchmark.deserialization_events_64k            avgt    5   190714,255 ±  1141,768  ns/op
ScroogeBenchmark.deserialization_events_8k             avgt    5    18205,037 ±   147,968  ns/op
ScroogeBenchmark.deserialization_site_1k               avgt    5     2371,956 ±    15,423  ns/op
ScroogeBenchmark.deserialization_site_2k               avgt    5     4145,122 ±    34,495  ns/op
ScroogeBenchmark.deserialization_site_4k               avgt    5     7574,489 ±    50,781  ns/op
ScroogeBenchmark.deserialization_site_64k              avgt    5   137884,240 ±   748,878  ns/op
ScroogeBenchmark.deserialization_site_8k               avgt    5    15929,701 ±   113,542  ns/op
ScroogeBenchmark.serialization_events_1k               avgt    5     3232,976 ±    72,427  ns/op
ScroogeBenchmark.serialization_events_2k               avgt    5     6517,064 ±    60,704  ns/op
ScroogeBenchmark.serialization_events_4k               avgt    5    13126,122 ±    72,706  ns/op
ScroogeBenchmark.serialization_events_64k              avgt    5   273060,021 ±  3074,956  ns/op
ScroogeBenchmark.serialization_events_8k               avgt    5    28388,466 ±   261,941  ns/op
ScroogeBenchmark.serialization_site_1k                 avgt    5     2463,160 ±    22,865  ns/op
ScroogeBenchmark.serialization_site_2k                 avgt    5     4374,977 ±    37,743  ns/op
ScroogeBenchmark.serialization_site_4k                 avgt    5     8688,016 ±    65,886  ns/op
ScroogeBenchmark.serialization_site_64k                avgt    5   158487,782 ±   826,631  ns/op
ScroogeBenchmark.serialization_site_8k                 avgt    5    17919,141 ±   177,876  ns/op

@acjay
Copy link

acjay commented Mar 18, 2018

Table format could really helpful

plokhotnyuk added a commit to plokhotnyuk/scala-serialization that referenced this pull request Mar 18, 2018
@plokhotnyuk
Copy link
Author

@acjay please see plotted results on updated gh page: #9

@plokhotnyuk plokhotnyuk changed the title Add jsoniter-scala Add jsoniter-scala and kryo-macros Mar 20, 2018
@plokhotnyuk
Copy link
Author

plokhotnyuk commented Mar 20, 2018

image

plokhotnyuk added a commit to plokhotnyuk/scala-serialization that referenced this pull request Mar 20, 2018

/** https://github.com/plokhotnyuk/jsoniter-scala */
object JsoniterScalaConverter extends MyConverter {
private[this] val writerConfig = WriterConfig(preferredBufSize = 131072)
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Such size of a buffer seems like a hack. Other libraries do reallocations during serialization/deserialization.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is not a hack, it is using a provided feature for a competitive advantage)

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@plokhotnyuk that's benchmarks-aware ad hocs
@dkomanov maybe you need to add 1Mb records ;)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Using of preallocated thread-local buffers with the capacity that is enough for expected workload is a normal practice for any parformance-aware parser/serializer.

BTW, jsoniter-scala is able to serialize huge messages efficiently using ~32K buffers in the writeToStream routine:
https://github.com/plokhotnyuk/jsoniter-scala/blob/master/jsoniter-scala-core/src/main/scala/com/github/plokhotnyuk/jsoniter_scala/core/package.scala#L190

@dkomanov
Copy link
Owner

Hi, thanks for your contribution. I hope I will have some time next week to review and update benchmarks.

@plokhotnyuk
Copy link
Author

plokhotnyuk commented Mar 24, 2018

Please also consider removing of the maven build configuration.

Staying with sbt only it will be much easy to add more libs (avro, colfer, msgpack, bson, smile etc.), automate code generation, run benchmarks for different Scala versions, and use compile-time optimizations that depend on version of scalac.

@plokhotnyuk
Copy link
Author

plokhotnyuk commented Apr 3, 2018

I have added benchmarks for Jackson CBOR and updated results, which I got on the Linux desktop (previous results was from the notebook).

plokhotnyuk added a commit to plokhotnyuk/scala-serialization that referenced this pull request Apr 3, 2018
@plokhotnyuk plokhotnyuk changed the title Add jsoniter-scala and kryo-macros Add jackson-cbor, jsoniter-scala and kryo-macros Apr 5, 2018
@plokhotnyuk plokhotnyuk changed the title Add jackson-cbor, jsoniter-scala and kryo-macros Add jackson-cbor, jackson-smile, jsoniter-scala, and kryo-macros Apr 25, 2018
plokhotnyuk added a commit to plokhotnyuk/scala-serialization that referenced this pull request Apr 25, 2018
dkomanov added a commit to dkomanov/stuff that referenced this pull request Aug 4, 2019
dkomanov added a commit to dkomanov/stuff that referenced this pull request Aug 4, 2019
@dkomanov
Copy link
Owner

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants