| # Java Benchmarks |
| ## System Environment |
| - Operation System:4.9.151-015.x86_64 |
| - CPU:Intel(R) Xeon(R) Platinum 8163 CPU @ 2.50GHz |
| - Byte Order:Little Endian |
| - L1d cache: 32K |
| - L1i cache:32K |
| - L2 cache: 1024K |
| - L3 cache: 33792K |
| |
| ## JMH params |
| Don't skip **warm up**, otherwise the results aren't accurate. |
| ```bash |
| -f 1 -wi 3 -i 3 -t 1 -w 2s -r 2s -rf cs |
| ``` |
| |
| ## Benchmark Data: |
| ### Struct |
| Struct is a class with 100 primitive fields: |
| ```java |
| public class Struct { |
| public int f1; |
| public long f2; |
| public float f3; |
| public double f4; |
| // ... |
| public double f99; |
| } |
| ``` |
| ### Struct2 |
| Struct2 is a class with 100 boxed fields: |
| ```java |
| public class Struct { |
| public Integer f1; |
| public Long f2; |
| public Float f3; |
| public Double f4; |
| // ... |
| public Double f99; |
| } |
| ``` |
| ### MediaContent |
| MEDIA_CONTENT is a class from [jvm-serializers](https://github.com/eishay/jvm-serializers/blob/master/tpc/src/data/media/MediaContent.java). |
| ### Sample |
| SAMPLE is a class from [kryo benchmark](https://github.com/EsotericSoftware/kryo/blob/master/benchmarks/src/main/java/com/esotericsoftware/kryo/benchmarks/data/Sample.java) |
| |
| ## Benchmark Plots |
| ### Serialize to heap buffer |
| Serialize data java byte array. |
| |
| #### Java schema consistent serialization |
| The deserialization peer must have same class definition with the serialization peer. |
| No class forward/backward compatibility are supported in this mode. |
| |
| <p align="center"> |
| <img width="24%" alt="" src="serialization/bench_serialize_STRUCT_to_array_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_STRUCT2_to_array_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_SAMPLE_to_array_tps.png"> |
| </p> |
| |
| #### Java schema compatible serialization |
| The deserialization peer can have different class definition with the serialization peer. |
| Class forward/backward compatibility are supported in this mode. |
| |
| <p align="center"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_STRUCT_to_array_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_STRUCT2_to_array_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_SAMPLE_to_array_tps.png"> |
| </p> |
| |
| #### Java schema consistent deserialization |
| The deserialization peer must have same class definition with the serialization peer. |
| No class forward/backward compatibility are supported in this mode. |
| |
| <p align="center"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_STRUCT_from_array_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_STRUCT2_from_array_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_SAMPLE_from_array_tps.png"> |
| </p> |
| |
| #### Java schema compatible deserialization |
| The deserialization peer can have different class definition with the serialization peer. |
| Class forward/backward compatibility are supported in this mode. |
| <p align="center"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_STRUCT_from_array_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_STRUCT2_from_array_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_SAMPLE_from_array_tps.png"> |
| </p> |
| |
| ### Off-heap serialization |
| Serialize data off-heap memory. |
| |
| #### Java schema consistent serialization |
| The deserialization peer must have same class definition with the serialization peer. |
| No class forward/backward compatibility are supported in this mode. |
| <p align="center"> |
| <img width="24%" alt="" src="serialization/bench_serialize_STRUCT_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_STRUCT2_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_MEDIA_CONTENT_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_SAMPLE_to_directBuffer_tps.png"> |
| </p> |
| |
| #### Java schema compatible serialization |
| The deserialization peer can have different class definition with the serialization peer. |
| Class forward/backward compatibility are supported in this mode. |
| <p align="center"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_STRUCT2_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_compatible_MEDIA_CONTENT_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="serialization/bench_serialize_SAMPLE_to_directBuffer_tps.png"> |
| </p> |
| |
| #### Java schema consistent deserialization |
| The deserialization peer must have same class definition with the serialization peer. |
| No class forward/backward compatibility are supported in this mode. |
| <p align="center"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_STRUCT_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_STRUCT2_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_MEDIA_CONTENT_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_SAMPLE_from_directBuffer_tps.png"> |
| </p> |
| |
| #### Java schema compatible deserialization |
| The deserialization peer can have different class definition with the serialization peer. |
| Class forward/backward compatibility are supported in this mode. |
| <p align="center"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_STRUCT2_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="deserialization/bench_deserialize_compatible_SAMPLE_from_directBuffer_tps.png"> |
| </p> |
| |
| ### Zero-copy serialization |
| Note that zero-copy serialization just avoid the copy in serialization, if you send data to other machine, there may be copies. |
| |
| But if you serialize data between processes on same node and use shared-memory, if the data are in off-heap before serialization, then other processes can read this buffer without any copies. |
| #### Java zero-copy serialize to heap buffer |
| <p align="center"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_serialize_BUFFER_to_array_tps.png"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_serialize_BUFFER_to_directBuffer_tps.png"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_array_tps.png"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png"> |
| </p> |
| |
| #### Java zero-copy serialize to direct buffer |
| <p align="center"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_deserialize_BUFFER_from_array_tps.png"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_deserialize_BUFFER_from_directBuffer_tps.png"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_array_tps.png"> |
| <img width="24%" alt="" src="zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_directBuffer_tps.png"> |
| </p> |
| |
| ## Benchmark Data |
| ### Java Serialization |
| | Lib | Benchmark | bufferType | objectType | references | Tps | |
| | ------- | ------- | ------- | ------- | ------- | ------- | |
| | Fst | serialize | array | SAMPLE | False | 915907.574306 | |
| | Fst | serialize | array | SAMPLE | True | 731869.156376 | |
| | Fst | serialize | array | MEDIA_CONTENT | False | 751892.023189 | |
| | Fst | serialize | array | MEDIA_CONTENT | True | 583859.907758 | |
| | Fst | serialize | array | STRUCT | False | 882178.995727 | |
| | Fst | serialize | array | STRUCT | True | 757753.756691 | |
| | Fst | serialize | array | STRUCT2 | False | 371762.982661 | |
| | Fst | serialize | array | STRUCT2 | True | 380638.700267 | |
| | Fst | serialize | directBuffer | SAMPLE | False | 902302.261168 | |
| | Fst | serialize | directBuffer | SAMPLE | True | 723614.06677 | |
| | Fst | serialize | directBuffer | MEDIA_CONTENT | False | 728001.08025 | |
| | Fst | serialize | directBuffer | MEDIA_CONTENT | True | 595679.580108 | |
| | Fst | serialize | directBuffer | STRUCT | False | 807847.663261 | |
| | Fst | serialize | directBuffer | STRUCT | True | 762088.935404 | |
| | Fst | serialize | directBuffer | STRUCT2 | False | 365317.705376 | |
| | Fst | serialize | directBuffer | STRUCT2 | True | 370851.880711 | |
| | Fury | serialize | array | SAMPLE | False | 3570966.469087 | |
| | Fury | serialize | array | SAMPLE | True | 1767693.83509 | |
| | Fury | serialize | array | MEDIA_CONTENT | False | 3031642.924542 | |
| | Fury | serialize | array | MEDIA_CONTENT | True | 2450384.600246 | |
| | Fury | serialize | array | STRUCT | False | 7501415.56726 | |
| | Fury | serialize | array | STRUCT | True | 6264439.154428 | |
| | Fury | serialize | array | STRUCT2 | False | 3586126.623874 | |
| | Fury | serialize | array | STRUCT2 | True | 3306474.506382 | |
| | Fury | serialize | directBuffer | SAMPLE | False | 3684487.760591 | |
| | Fury | serialize | directBuffer | SAMPLE | True | 1826456.709478 | |
| | Fury | serialize | directBuffer | MEDIA_CONTENT | False | 2479862.129632 | |
| | Fury | serialize | directBuffer | MEDIA_CONTENT | True | 1938527.588331 | |
| | Fury | serialize | directBuffer | STRUCT | False | 9834243.243204 | |
| | Fury | serialize | directBuffer | STRUCT | True | 7551780.823133 | |
| | Fury | serialize | directBuffer | STRUCT2 | False | 2643155.135327 | |
| | Fury | serialize | directBuffer | STRUCT2 | True | 2391110.083108 | |
| | Fury | serialize_compatible | array | SAMPLE | False | 3604596.465625 | |
| | Fury | serialize_compatible | array | SAMPLE | True | 1619648.337293 | |
| | Fury | serialize_compatible | array | MEDIA_CONTENT | False | 1679272.036243 | |
| | Fury | serialize_compatible | array | MEDIA_CONTENT | True | 1406736.538716 | |
| | Fury | serialize_compatible | array | STRUCT | False | 3530406.108869 | |
| | Fury | serialize_compatible | array | STRUCT | True | 3293059.098127 | |
| | Fury | serialize_compatible | array | STRUCT2 | False | 2773368.99768 | |
| | Fury | serialize_compatible | array | STRUCT2 | True | 2564174.550276 | |
| | Fury | serialize_compatible | directBuffer | SAMPLE | False | 3484533.218305 | |
| | Fury | serialize_compatible | directBuffer | SAMPLE | True | 1730824.630648 | |
| | Fury | serialize_compatible | directBuffer | MEDIA_CONTENT | False | 1710680.937387 | |
| | Fury | serialize_compatible | directBuffer | MEDIA_CONTENT | True | 1149999.473994 | |
| | Fury | serialize_compatible | directBuffer | STRUCT | False | 2653169.568374 | |
| | Fury | serialize_compatible | directBuffer | STRUCT | True | 2393817.762938 | |
| | Fury | serialize_compatible | directBuffer | STRUCT2 | False | 1912402.937879 | |
| | Fury | serialize_compatible | directBuffer | STRUCT2 | True | 1848338.968058 | |
| | Furymetashared | serialize_compatible | array | SAMPLE | False | 4409055.687063 | |
| | Furymetashared | serialize_compatible | array | SAMPLE | True | 1840705.439334 | |
| | Furymetashared | serialize_compatible | array | MEDIA_CONTENT | False | 2992488.235281 | |
| | Furymetashared | serialize_compatible | array | MEDIA_CONTENT | True | 2058738.716953 | |
| | Furymetashared | serialize_compatible | array | STRUCT | False | 9204444.777172 | |
| | Furymetashared | serialize_compatible | array | STRUCT | True | 7064625.291374 | |
| | Furymetashared | serialize_compatible | array | STRUCT2 | False | 2575824.143864 | |
| | Furymetashared | serialize_compatible | array | STRUCT2 | True | 3543082.528217 | |
| | Furymetashared | serialize_compatible | directBuffer | SAMPLE | False | 5043538.364886 | |
| | Furymetashared | serialize_compatible | directBuffer | SAMPLE | True | 1859289.705838 | |
| | Furymetashared | serialize_compatible | directBuffer | MEDIA_CONTENT | False | 2491443.556971 | |
| | Furymetashared | serialize_compatible | directBuffer | MEDIA_CONTENT | True | 1804349.244125 | |
| | Furymetashared | serialize_compatible | directBuffer | STRUCT | False | 11650249.648715 | |
| | Furymetashared | serialize_compatible | directBuffer | STRUCT | True | 8702412.752357 | |
| | Furymetashared | serialize_compatible | directBuffer | STRUCT2 | False | 2714748.572448 | |
| | Furymetashared | serialize_compatible | directBuffer | STRUCT2 | True | 1866073.031851 | |
| | Hession | serialize | array | SAMPLE | False | 240386.502846 | |
| | Hession | serialize | array | SAMPLE | True | 192414.014211 | |
| | Hession | serialize | array | MEDIA_CONTENT | False | 367782.358049 | |
| | Hession | serialize | array | MEDIA_CONTENT | True | 329427.47068 | |
| | Hession | serialize | array | STRUCT | False | 258233.998931 | |
| | Hession | serialize | array | STRUCT | True | 260845.209485 | |
| | Hession | serialize | array | STRUCT2 | False | 56056.080075 | |
| | Hession | serialize | array | STRUCT2 | True | 60038.87979 | |
| | Hession | serialize | directBuffer | SAMPLE | False | 240981.308085 | |
| | Hession | serialize | directBuffer | SAMPLE | True | 211949.960255 | |
| | Hession | serialize | directBuffer | MEDIA_CONTENT | False | 372477.13815 | |
| | Hession | serialize | directBuffer | MEDIA_CONTENT | True | 353376.085025 | |
| | Hession | serialize | directBuffer | STRUCT | False | 266481.009245 | |
| | Hession | serialize | directBuffer | STRUCT | True | 261762.594966 | |
| | Hession | serialize | directBuffer | STRUCT2 | False | 55924.319442 | |
| | Hession | serialize | directBuffer | STRUCT2 | True | 56674.065604 | |
| | Hession | serialize_compatible | array | SAMPLE | False | 234454.975158 | |
| | Hession | serialize_compatible | array | SAMPLE | True | 206174.173039 | |
| | Hession | serialize_compatible | array | MEDIA_CONTENT | False | 377195.903772 | |
| | Hession | serialize_compatible | array | MEDIA_CONTENT | True | 351657.879556 | |
| | Hession | serialize_compatible | array | STRUCT | False | 258650.663523 | |
| | Hession | serialize_compatible | array | STRUCT | True | 263564.913879 | |
| | Hession | serialize_compatible | array | STRUCT2 | False | 58509.125342 | |
| | Hession | serialize_compatible | array | STRUCT2 | True | 55552.977735 | |
| | Hession | serialize_compatible | directBuffer | SAMPLE | False | 194761.244263 | |
| | Hession | serialize_compatible | directBuffer | SAMPLE | True | 212840.483308 | |
| | Hession | serialize_compatible | directBuffer | MEDIA_CONTENT | False | 371729.727192 | |
| | Hession | serialize_compatible | directBuffer | MEDIA_CONTENT | True | 343834.954942 | |
| | Hession | serialize_compatible | directBuffer | STRUCT | False | 249241.452137 | |
| | Hession | serialize_compatible | directBuffer | STRUCT | True | 263623.143601 | |
| | Hession | serialize_compatible | directBuffer | STRUCT2 | False | 58908.567439 | |
| | Hession | serialize_compatible | directBuffer | STRUCT2 | True | 55524.373547 | |
| | Jdk | serialize | array | SAMPLE | False | 118374.836631 | |
| | Jdk | serialize | array | SAMPLE | True | 119858.140625 | |
| | Jdk | serialize | array | MEDIA_CONTENT | False | 137989.198821 | |
| | Jdk | serialize | array | MEDIA_CONTENT | True | 140260.668888 | |
| | Jdk | serialize | array | STRUCT | False | 155908.24424 | |
| | Jdk | serialize | array | STRUCT | True | 151258.539369 | |
| | Jdk | serialize | array | STRUCT2 | False | 36846.049162 | |
| | Jdk | serialize | array | STRUCT2 | True | 38183.705811 | |
| | Jdk | serialize | directBuffer | SAMPLE | False | 118273.584257 | |
| | Jdk | serialize | directBuffer | SAMPLE | True | 108263.040839 | |
| | Jdk | serialize | directBuffer | MEDIA_CONTENT | False | 138567.623369 | |
| | Jdk | serialize | directBuffer | MEDIA_CONTENT | True | 140158.67391 | |
| | Jdk | serialize | directBuffer | STRUCT | False | 154875.908438 | |
| | Jdk | serialize | directBuffer | STRUCT | True | 156404.686214 | |
| | Jdk | serialize | directBuffer | STRUCT2 | False | 37444.967981 | |
| | Jdk | serialize | directBuffer | STRUCT2 | True | 35798.679246 | |
| | Kryo | serialize | array | SAMPLE | False | 1105365.931217 | |
| | Kryo | serialize | array | SAMPLE | True | 734215.482491 | |
| | Kryo | serialize | array | MEDIA_CONTENT | False | 730792.521676 | |
| | Kryo | serialize | array | MEDIA_CONTENT | True | 445251.084327 | |
| | Kryo | serialize | array | STRUCT | False | 558194.100861 | |
| | Kryo | serialize | array | STRUCT | True | 557542.628765 | |
| | Kryo | serialize | array | STRUCT2 | False | 325172.969175 | |
| | Kryo | serialize | array | STRUCT2 | True | 259863.332448 | |
| | Kryo | serialize | directBuffer | SAMPLE | False | 1376560.302168 | |
| | Kryo | serialize | directBuffer | SAMPLE | True | 932887.968348 | |
| | Kryo | serialize | directBuffer | MEDIA_CONTENT | False | 608972.51758 | |
| | Kryo | serialize | directBuffer | MEDIA_CONTENT | True | 359875.473951 | |
| | Kryo | serialize | directBuffer | STRUCT | False | 1078046.011115 | |
| | Kryo | serialize | directBuffer | STRUCT | True | 853350.408656 | |
| | Kryo | serialize | directBuffer | STRUCT2 | False | 355688.882786 | |
| | Kryo | serialize | directBuffer | STRUCT2 | True | 338960.426033 | |
| | Kryo | serialize_compatible | array | SAMPLE | False | 378907.663184 | |
| | Kryo | serialize_compatible | array | SAMPLE | True | 320815.567701 | |
| | Kryo | serialize_compatible | array | MEDIA_CONTENT | False | 188911.259146 | |
| | Kryo | serialize_compatible | array | MEDIA_CONTENT | True | 145782.916427 | |
| | Kryo | serialize_compatible | array | STRUCT | False | 145964.199559 | |
| | Kryo | serialize_compatible | array | STRUCT | True | 136180.832879 | |
| | Kryo | serialize_compatible | array | STRUCT2 | False | 125807.748004 | |
| | Kryo | serialize_compatible | array | STRUCT2 | True | 114983.546343 | |
| | Kryo | serialize_compatible | directBuffer | SAMPLE | False | 296102.615094 | |
| | Kryo | serialize_compatible | directBuffer | SAMPLE | True | 276757.392449 | |
| | Kryo | serialize_compatible | directBuffer | MEDIA_CONTENT | False | 185363.714829 | |
| | Kryo | serialize_compatible | directBuffer | MEDIA_CONTENT | True | 142836.961878 | |
| | Kryo | serialize_compatible | directBuffer | STRUCT | False | 106695.800245 | |
| | Kryo | serialize_compatible | directBuffer | STRUCT | True | 106458.212005 | |
| | Kryo | serialize_compatible | directBuffer | STRUCT2 | False | 92130.672361 | |
| | Kryo | serialize_compatible | directBuffer | STRUCT2 | True | 88989.724768 | |
| | Protostuff | serialize | array | SAMPLE | False | 663272.710783 | |
| | Protostuff | serialize | array | MEDIA_CONTENT | False | 780618.761219 | |
| | Protostuff | serialize | array | STRUCT | False | 330975.350403 | |
| | Protostuff | serialize | array | STRUCT2 | False | 324563.440433 | |
| | Protostuff | serialize | directBuffer | SAMPLE | False | 693641.589806 | |
| | Protostuff | serialize | directBuffer | MEDIA_CONTENT | False | 805941.345157 | |
| | Protostuff | serialize | directBuffer | STRUCT | False | 340262.650047 | |
| | Protostuff | serialize | directBuffer | STRUCT2 | False | 325093.716261 | |
| | Fst | deserialize | array | SAMPLE | False | 473409.796491 | |
| | Fst | deserialize | array | SAMPLE | True | 428315.502365 | |
| | Fst | deserialize | array | MEDIA_CONTENT | False | 363455.785182 | |
| | Fst | deserialize | array | MEDIA_CONTENT | True | 304371.728638 | |
| | Fst | deserialize | array | STRUCT | False | 357887.235311 | |
| | Fst | deserialize | array | STRUCT | True | 353480.554035 | |
| | Fst | deserialize | array | STRUCT2 | False | 280131.091068 | |
| | Fst | deserialize | array | STRUCT2 | True | 260649.308016 | |
| | Fst | deserialize | directBuffer | SAMPLE | False | 441027.550809 | |
| | Fst | deserialize | directBuffer | SAMPLE | True | 420523.770904 | |
| | Fst | deserialize | directBuffer | MEDIA_CONTENT | False | 311691.658687 | |
| | Fst | deserialize | directBuffer | MEDIA_CONTENT | True | 251820.171513 | |
| | Fst | deserialize | directBuffer | STRUCT | False | 352441.597147 | |
| | Fst | deserialize | directBuffer | STRUCT | True | 334574.303484 | |
| | Fst | deserialize | directBuffer | STRUCT2 | False | 262519.85881 | |
| | Fst | deserialize | directBuffer | STRUCT2 | True | 234973.637096 | |
| | Fury | deserialize | array | SAMPLE | False | 2069988.624415 | |
| | Fury | deserialize | array | SAMPLE | True | 1797942.442313 | |
| | Fury | deserialize | array | MEDIA_CONTENT | False | 2054066.903469 | |
| | Fury | deserialize | array | MEDIA_CONTENT | True | 1507767.206603 | |
| | Fury | deserialize | array | STRUCT | False | 4595230.434552 | |
| | Fury | deserialize | array | STRUCT | True | 4634753.596131 | |
| | Fury | deserialize | array | STRUCT2 | False | 1126298.35955 | |
| | Fury | deserialize | array | STRUCT2 | True | 1046649.083082 | |
| | Fury | deserialize | directBuffer | SAMPLE | False | 2429791.078395 | |
| | Fury | deserialize | directBuffer | SAMPLE | True | 1958815.397807 | |
| | Fury | deserialize | directBuffer | MEDIA_CONTENT | False | 1502746.028159 | |
| | Fury | deserialize | directBuffer | MEDIA_CONTENT | True | 1290593.975753 | |
| | Fury | deserialize | directBuffer | STRUCT | False | 5012002.859236 | |
| | Fury | deserialize | directBuffer | STRUCT | True | 4864329.316938 | |
| | Fury | deserialize | directBuffer | STRUCT2 | False | 1117586.457565 | |
| | Fury | deserialize | directBuffer | STRUCT2 | True | 1018277.848128 | |
| | Fury | deserialize_compatible | array | SAMPLE | False | 2496046.895861 | |
| | Fury | deserialize_compatible | array | SAMPLE | True | 1834139.395757 | |
| | Fury | deserialize_compatible | array | MEDIA_CONTENT | False | 1441671.70632 | |
| | Fury | deserialize_compatible | array | MEDIA_CONTENT | True | 1121136.039627 | |
| | Fury | deserialize_compatible | array | STRUCT | False | 2110335.039275 | |
| | Fury | deserialize_compatible | array | STRUCT | True | 2135681.982674 | |
| | Fury | deserialize_compatible | array | STRUCT2 | False | 849507.176263 | |
| | Fury | deserialize_compatible | array | STRUCT2 | True | 815120.319155 | |
| | Fury | deserialize_compatible | directBuffer | SAMPLE | False | 2308111.633661 | |
| | Fury | deserialize_compatible | directBuffer | SAMPLE | True | 1820490.585648 | |
| | Fury | deserialize_compatible | directBuffer | MEDIA_CONTENT | False | 1256034.732514 | |
| | Fury | deserialize_compatible | directBuffer | MEDIA_CONTENT | True | 1054942.751816 | |
| | Fury | deserialize_compatible | directBuffer | STRUCT | False | 1596464.248141 | |
| | Fury | deserialize_compatible | directBuffer | STRUCT | True | 1684681.074242 | |
| | Fury | deserialize_compatible | directBuffer | STRUCT2 | False | 784036.589363 | |
| | Fury | deserialize_compatible | directBuffer | STRUCT2 | True | 782679.662083 | |
| | Furymetashared | deserialize_compatible | array | SAMPLE | False | 2485564.396196 | |
| | Furymetashared | deserialize_compatible | array | SAMPLE | True | 2002938.794909 | |
| | Furymetashared | deserialize_compatible | array | MEDIA_CONTENT | False | 2479742.810882 | |
| | Furymetashared | deserialize_compatible | array | MEDIA_CONTENT | True | 1623938.202345 | |
| | Furymetashared | deserialize_compatible | array | STRUCT | False | 4978833.206806 | |
| | Furymetashared | deserialize_compatible | array | STRUCT | True | 4807963.88252 | |
| | Furymetashared | deserialize_compatible | array | STRUCT2 | False | 1201998.142474 | |
| | Furymetashared | deserialize_compatible | array | STRUCT2 | True | 1058423.614156 | |
| | Furymetashared | deserialize_compatible | directBuffer | SAMPLE | False | 2489261.533644 | |
| | Furymetashared | deserialize_compatible | directBuffer | SAMPLE | True | 1927548.827586 | |
| | Furymetashared | deserialize_compatible | directBuffer | MEDIA_CONTENT | False | 1718098.363961 | |
| | Furymetashared | deserialize_compatible | directBuffer | MEDIA_CONTENT | True | 1333345.536684 | |
| | Furymetashared | deserialize_compatible | directBuffer | STRUCT | False | 5149070.65783 | |
| | Furymetashared | deserialize_compatible | directBuffer | STRUCT | True | 5137500.621288 | |
| | Furymetashared | deserialize_compatible | directBuffer | STRUCT2 | False | 1131212.586953 | |
| | Furymetashared | deserialize_compatible | directBuffer | STRUCT2 | True | 1089162.408165 | |
| | Hession | deserialize | array | SAMPLE | False | 119471.518388 | |
| | Hession | deserialize | array | SAMPLE | True | 121106.002978 | |
| | Hession | deserialize | array | MEDIA_CONTENT | False | 118156.072484 | |
| | Hession | deserialize | array | MEDIA_CONTENT | True | 120016.594171 | |
| | Hession | deserialize | array | STRUCT | False | 84709.108821 | |
| | Hession | deserialize | array | STRUCT | True | 91050.370244 | |
| | Hession | deserialize | array | STRUCT2 | False | 69758.767783 | |
| | Hession | deserialize | array | STRUCT2 | True | 68616.029248 | |
| | Hession | deserialize | directBuffer | SAMPLE | False | 117806.916589 | |
| | Hession | deserialize | directBuffer | SAMPLE | True | 121940.783597 | |
| | Hession | deserialize | directBuffer | MEDIA_CONTENT | False | 111067.942626 | |
| | Hession | deserialize | directBuffer | MEDIA_CONTENT | True | 121820.82126 | |
| | Hession | deserialize | directBuffer | STRUCT | False | 91151.633583 | |
| | Hession | deserialize | directBuffer | STRUCT | True | 91037.205901 | |
| | Hession | deserialize | directBuffer | STRUCT2 | False | 66866.108653 | |
| | Hession | deserialize | directBuffer | STRUCT2 | True | 65338.345185 | |
| | Hession | deserialize_compatible | array | SAMPLE | False | 121898.105768 | |
| | Hession | deserialize_compatible | array | SAMPLE | True | 121297.485903 | |
| | Hession | deserialize_compatible | array | MEDIA_CONTENT | False | 121619.090797 | |
| | Hession | deserialize_compatible | array | MEDIA_CONTENT | True | 119994.10405 | |
| | Hession | deserialize_compatible | array | STRUCT | False | 88617.486795 | |
| | Hession | deserialize_compatible | array | STRUCT | True | 90206.654212 | |
| | Hession | deserialize_compatible | array | STRUCT2 | False | 63703.763814 | |
| | Hession | deserialize_compatible | array | STRUCT2 | True | 69521.573119 | |
| | Hession | deserialize_compatible | directBuffer | SAMPLE | False | 124044.417439 | |
| | Hession | deserialize_compatible | directBuffer | SAMPLE | True | 120276.449497 | |
| | Hession | deserialize_compatible | directBuffer | MEDIA_CONTENT | False | 107594.47489 | |
| | Hession | deserialize_compatible | directBuffer | MEDIA_CONTENT | True | 116531.023438 | |
| | Hession | deserialize_compatible | directBuffer | STRUCT | False | 89580.561575 | |
| | Hession | deserialize_compatible | directBuffer | STRUCT | True | 84407.472531 | |
| | Hession | deserialize_compatible | directBuffer | STRUCT2 | False | 69342.030965 | |
| | Hession | deserialize_compatible | directBuffer | STRUCT2 | True | 68542.055543 | |
| | Jdk | deserialize | array | SAMPLE | False | 29309.573998 | |
| | Jdk | deserialize | array | SAMPLE | True | 27466.003923 | |
| | Jdk | deserialize | array | MEDIA_CONTENT | False | 38536.250402 | |
| | Jdk | deserialize | array | MEDIA_CONTENT | True | 38957.19109 | |
| | Jdk | deserialize | array | STRUCT | False | 29603.066599 | |
| | Jdk | deserialize | array | STRUCT | True | 29727.744196 | |
| | Jdk | deserialize | array | STRUCT2 | False | 14888.805111 | |
| | Jdk | deserialize | array | STRUCT2 | True | 14034.100664 | |
| | Jdk | deserialize | directBuffer | SAMPLE | False | 28128.457935 | |
| | Jdk | deserialize | directBuffer | SAMPLE | True | 28241.014735 | |
| | Jdk | deserialize | directBuffer | MEDIA_CONTENT | False | 40512.632076 | |
| | Jdk | deserialize | directBuffer | MEDIA_CONTENT | True | 37030.594632 | |
| | Jdk | deserialize | directBuffer | STRUCT | False | 28717.004518 | |
| | Jdk | deserialize | directBuffer | STRUCT | True | 29549.998286 | |
| | Jdk | deserialize | directBuffer | STRUCT2 | False | 14652.043788 | |
| | Jdk | deserialize | directBuffer | STRUCT2 | True | 14425.886048 | |
| | Kryo | deserialize | array | SAMPLE | False | 979173.981159 | |
| | Kryo | deserialize | array | SAMPLE | True | 716438.884369 | |
| | Kryo | deserialize | array | MEDIA_CONTENT | False | 577631.234369 | |
| | Kryo | deserialize | array | MEDIA_CONTENT | True | 365530.417232 | |
| | Kryo | deserialize | array | STRUCT | False | 607750.343557 | |
| | Kryo | deserialize | array | STRUCT | True | 552802.247807 | |
| | Kryo | deserialize | array | STRUCT2 | False | 275984.042401 | |
| | Kryo | deserialize | array | STRUCT2 | True | 242710.554833 | |
| | Kryo | deserialize | directBuffer | SAMPLE | False | 983538.936801 | |
| | Kryo | deserialize | directBuffer | SAMPLE | True | 762889.302732 | |
| | Kryo | deserialize | directBuffer | MEDIA_CONTENT | False | 389473.174523 | |
| | Kryo | deserialize | directBuffer | MEDIA_CONTENT | True | 306995.240799 | |
| | Kryo | deserialize | directBuffer | STRUCT | False | 910534.169114 | |
| | Kryo | deserialize | directBuffer | STRUCT | True | 914404.107564 | |
| | Kryo | deserialize | directBuffer | STRUCT2 | False | 319247.256793 | |
| | Kryo | deserialize | directBuffer | STRUCT2 | True | 249105.828416 | |
| | Kryo | deserialize_compatible | array | SAMPLE | False | 255086.928308 | |
| | Kryo | deserialize_compatible | array | SAMPLE | True | 238811.99551 | |
| | Kryo | deserialize_compatible | array | MEDIA_CONTENT | False | 180882.860363 | |
| | Kryo | deserialize_compatible | array | MEDIA_CONTENT | True | 154311.21154 | |
| | Kryo | deserialize_compatible | array | STRUCT | False | 78771.635309 | |
| | Kryo | deserialize_compatible | array | STRUCT | True | 72805.937649 | |
| | Kryo | deserialize_compatible | array | STRUCT2 | False | 60602.285743 | |
| | Kryo | deserialize_compatible | array | STRUCT2 | True | 62729.908347 | |
| | Kryo | deserialize_compatible | directBuffer | SAMPLE | False | 201993.78789 | |
| | Kryo | deserialize_compatible | directBuffer | SAMPLE | True | 174534.71087 | |
| | Kryo | deserialize_compatible | directBuffer | MEDIA_CONTENT | False | 134485.1603 | |
| | Kryo | deserialize_compatible | directBuffer | MEDIA_CONTENT | True | 119311.787329 | |
| | Kryo | deserialize_compatible | directBuffer | STRUCT | False | 58574.904245 | |
| | Kryo | deserialize_compatible | directBuffer | STRUCT | True | 60685.320299 | |
| | Kryo | deserialize_compatible | directBuffer | STRUCT2 | False | 54637.329134 | |
| | Kryo | deserialize_compatible | directBuffer | STRUCT2 | True | 51761.569591 | |
| | Protostuff | deserialize | array | SAMPLE | False | 619338.385412 | |
| | Protostuff | deserialize | array | MEDIA_CONTENT | False | 951662.019963 | |
| | Protostuff | deserialize | array | STRUCT | False | 517381.168594 | |
| | Protostuff | deserialize | array | STRUCT2 | False | 416212.973861 | |
| | Protostuff | deserialize | directBuffer | SAMPLE | False | 624804.978534 | |
| | Protostuff | deserialize | directBuffer | MEDIA_CONTENT | False | 964664.641598 | |
| | Protostuff | deserialize | directBuffer | STRUCT | False | 538924.947147 | |
| | Protostuff | deserialize | directBuffer | STRUCT2 | False | 425523.315814 | |
| |
| ### Java Zero-copy |
| | Lib | Benchmark | array_size | bufferType | dataType | Tps | |
| | ------- | ------- | ------- | ------- | ------- | ------- | |
| | Fst | deserialize | 200 | array | PRIMITIVE_ARRAY | 219333.990504 | |
| | Fst | deserialize | 200 | array | BUFFER | 657754.887247 | |
| | Fst | deserialize | 200 | directBuffer | PRIMITIVE_ARRAY | 179604.045774 | |
| | Fst | deserialize | 200 | directBuffer | BUFFER | 598421.278941 | |
| | Fst | deserialize | 1000 | array | PRIMITIVE_ARRAY | 53100.903684 | |
| | Fst | deserialize | 1000 | array | BUFFER | 424147.154601 | |
| | Fst | deserialize | 1000 | directBuffer | PRIMITIVE_ARRAY | 38572.001768 | |
| | Fst | deserialize | 1000 | directBuffer | BUFFER | 298929.116572 | |
| | Fst | deserialize | 5000 | array | PRIMITIVE_ARRAY | 10672.872798 | |
| | Fst | deserialize | 5000 | array | BUFFER | 136934.604328 | |
| | Fst | deserialize | 5000 | directBuffer | PRIMITIVE_ARRAY | 8561.694533 | |
| | Fst | deserialize | 5000 | directBuffer | BUFFER | 77950.612503 | |
| | Fst | serialize | 200 | array | PRIMITIVE_ARRAY | 313986.053417 | |
| | Fst | serialize | 200 | array | BUFFER | 2400193.240466 | |
| | Fst | serialize | 200 | directBuffer | PRIMITIVE_ARRAY | 294132.218623 | |
| | Fst | serialize | 200 | directBuffer | BUFFER | 2482550.111756 | |
| | Fst | serialize | 1000 | array | PRIMITIVE_ARRAY | 67209.107012 | |
| | Fst | serialize | 1000 | array | BUFFER | 1805557.47781 | |
| | Fst | serialize | 1000 | directBuffer | PRIMITIVE_ARRAY | 66108.014324 | |
| | Fst | serialize | 1000 | directBuffer | BUFFER | 1644789.42701 | |
| | Fst | serialize | 5000 | array | PRIMITIVE_ARRAY | 14997.400124 | |
| | Fst | serialize | 5000 | array | BUFFER | 811029.402136 | |
| | Fst | serialize | 5000 | directBuffer | PRIMITIVE_ARRAY | 15000.378818 | |
| | Fst | serialize | 5000 | directBuffer | BUFFER | 477148.54085 | |
| | Fury | deserialize | 200 | array | PRIMITIVE_ARRAY | 986136.067809 | |
| | Fury | deserialize | 200 | array | BUFFER | 3302149.383135 | |
| | Fury | deserialize | 200 | directBuffer | PRIMITIVE_ARRAY | 991807.969328 | |
| | Fury | deserialize | 200 | directBuffer | BUFFER | 3113115.471758 | |
| | Fury | deserialize | 1000 | array | PRIMITIVE_ARRAY | 205671.992736 | |
| | Fury | deserialize | 1000 | array | BUFFER | 2831942.848999 | |
| | Fury | deserialize | 1000 | directBuffer | PRIMITIVE_ARRAY | 202475.242341 | |
| | Fury | deserialize | 1000 | directBuffer | BUFFER | 3397690.327371 | |
| | Fury | deserialize | 5000 | array | PRIMITIVE_ARRAY | 40312.590172 | |
| | Fury | deserialize | 5000 | array | BUFFER | 3296658.120035 | |
| | Fury | deserialize | 5000 | directBuffer | PRIMITIVE_ARRAY | 40413.743717 | |
| | Fury | deserialize | 5000 | directBuffer | BUFFER | 3284441.570594 | |
| | Fury | serialize | 200 | array | PRIMITIVE_ARRAY | 8297232.942927 | |
| | Fury | serialize | 200 | array | BUFFER | 5123572.914045 | |
| | Fury | serialize | 200 | directBuffer | PRIMITIVE_ARRAY | 8335248.350301 | |
| | Fury | serialize | 200 | directBuffer | BUFFER | 5400346.890126 | |
| | Fury | serialize | 1000 | array | PRIMITIVE_ARRAY | 8772856.921028 | |
| | Fury | serialize | 1000 | array | BUFFER | 4979590.929127 | |
| | Fury | serialize | 1000 | directBuffer | PRIMITIVE_ARRAY | 8207563.785251 | |
| | Fury | serialize | 1000 | directBuffer | BUFFER | 5376191.775007 | |
| | Fury | serialize | 5000 | array | PRIMITIVE_ARRAY | 8027439.580246 | |
| | Fury | serialize | 5000 | array | BUFFER | 5018916.32477 | |
| | Fury | serialize | 5000 | directBuffer | PRIMITIVE_ARRAY | 7695981.988316 | |
| | Fury | serialize | 5000 | directBuffer | BUFFER | 5330897.68296 | |
| | Kryo | deserialize | 200 | array | PRIMITIVE_ARRAY | 146675.360652 | |
| | Kryo | deserialize | 200 | array | BUFFER | 1296284.78772 | |
| | Kryo | deserialize | 200 | directBuffer | PRIMITIVE_ARRAY | 518713.299424 | |
| | Kryo | deserialize | 200 | directBuffer | BUFFER | 1004844.498712 | |
| | Kryo | deserialize | 1000 | array | PRIMITIVE_ARRAY | 30409.835023 | |
| | Kryo | deserialize | 1000 | array | BUFFER | 721266.54113 | |
| | Kryo | deserialize | 1000 | directBuffer | PRIMITIVE_ARRAY | 112132.004609 | |
| | Kryo | deserialize | 1000 | directBuffer | BUFFER | 592972.713203 | |
| | Kryo | deserialize | 5000 | array | PRIMITIVE_ARRAY | 6124.351248 | |
| | Kryo | deserialize | 5000 | array | BUFFER | 147251.846111 | |
| | Kryo | deserialize | 5000 | directBuffer | PRIMITIVE_ARRAY | 21826.04041 | |
| | Kryo | deserialize | 5000 | directBuffer | BUFFER | 148614.476829 | |
| | Kryo | serialize | 200 | array | PRIMITIVE_ARRAY | 147342.606262 | |
| | Kryo | serialize | 200 | array | BUFFER | 1985187.977633 | |
| | Kryo | serialize | 200 | directBuffer | PRIMITIVE_ARRAY | 972683.763633 | |
| | Kryo | serialize | 200 | directBuffer | BUFFER | 1739454.51977 | |
| | Kryo | serialize | 1000 | array | PRIMITIVE_ARRAY | 31395.721514 | |
| | Kryo | serialize | 1000 | array | BUFFER | 1616159.67123 | |
| | Kryo | serialize | 1000 | directBuffer | PRIMITIVE_ARRAY | 209183.090868 | |
| | Kryo | serialize | 1000 | directBuffer | BUFFER | 1377272.56851 | |
| | Kryo | serialize | 5000 | array | PRIMITIVE_ARRAY | 6248.006967 | |
| | Kryo | serialize | 5000 | array | BUFFER | 711287.533377 | |
| | Kryo | serialize | 5000 | directBuffer | PRIMITIVE_ARRAY | 43565.678616 | |
| | Kryo | serialize | 5000 | directBuffer | BUFFER | 707092.956534 | |