You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fory.apache.org by ch...@apache.org on 2026/02/06 07:12:02 UTC

(fory-site) 03/03: 🔄 created local 'docs/benchmarks/' from remote 'docs/benchmarks/'

This is an automated email from the ASF dual-hosted git repository.

chaokunyang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fory-site.git

commit 6b77c692800d598d70fac832df834986fb0ad041
Author: chaokunyang <sh...@gmail.com>
AuthorDate: Fri Feb 6 07:11:55 2026 +0000

    🔄 created local 'docs/benchmarks/' from remote 'docs/benchmarks/'
---
 docs/benchmarks/cpp/README.md                      |  62 +++
 docs/benchmarks/cpp/throughput.png                 | Bin 0 -> 44522 bytes
 docs/benchmarks/go/README.md                       |  84 +++
 docs/benchmarks/go/benchmark_combined.png          | Bin 0 -> 193421 bytes
 docs/benchmarks/go/benchmark_mediacontent.png      | Bin 0 -> 63179 bytes
 docs/benchmarks/go/benchmark_mediacontentlist.png  | Bin 0 -> 75245 bytes
 docs/benchmarks/go/benchmark_results.txt           | 326 ++++++++++++
 docs/benchmarks/go/benchmark_sample.png            | Bin 0 -> 64836 bytes
 docs/benchmarks/go/benchmark_samplelist.png        | Bin 0 -> 70519 bytes
 docs/benchmarks/go/benchmark_struct.png            | Bin 0 -> 65532 bytes
 docs/benchmarks/go/benchmark_structlist.png        | Bin 0 -> 63835 bytes
 docs/benchmarks/go/serialized_sizes.txt            |  27 +
 docs/benchmarks/java/README.md                     | 577 +++++++++++++++++++++
 ...ize_compatible_MEDIA_CONTENT_from_array_tps.png | Bin 0 -> 31840 bytes
 ...ize_compatible_STRUCT_from_directBuffer_tps.png | Bin 0 -> 33119 bytes
 ...alize_compatible_MEDIA_CONTENT_to_array_tps.png | Bin 0 -> 34290 bytes
 ...alize_compatible_STRUCT_to_directBuffer_tps.png | Bin 0 -> 34685 bytes
 .../java/data/jmh-jdk-11-deserialization.csv       | 153 ++++++
 .../java/data/jmh-jdk-11-serialization.csv         | 153 ++++++
 docs/benchmarks/java/data/jmh-jdk-11-zerocopy.csv  |  73 +++
 ...ch_deserialize_MEDIA_CONTENT_from_array_tps.png | Bin 0 -> 33209 bytes
 ...rialize_MEDIA_CONTENT_from_directBuffer_tps.png | Bin 0 -> 34145 bytes
 .../bench_deserialize_SAMPLE_from_array_tps.png    | Bin 0 -> 32523 bytes
 ...ch_deserialize_SAMPLE_from_directBuffer_tps.png | Bin 0 -> 31301 bytes
 .../bench_deserialize_STRUCT2_from_array_tps.png   | Bin 0 -> 30532 bytes
 ...h_deserialize_STRUCT2_from_directBuffer_tps.png | Bin 0 -> 31564 bytes
 .../bench_deserialize_STRUCT_from_array_tps.png    | Bin 0 -> 30493 bytes
 ...ch_deserialize_STRUCT_from_directBuffer_tps.png | Bin 0 -> 31682 bytes
 ...patible_MEDIA_CONTENT_from_directBuffer_tps.png | Bin 0 -> 34063 bytes
 ...eserialize_compatible_SAMPLE_from_array_tps.png | Bin 0 -> 32469 bytes
 ...ize_compatible_SAMPLE_from_directBuffer_tps.png | Bin 0 -> 32277 bytes
 ...serialize_compatible_STRUCT2_from_array_tps.png | Bin 0 -> 32025 bytes
 ...ze_compatible_STRUCT2_from_directBuffer_tps.png | Bin 0 -> 31872 bytes
 ...eserialize_compatible_STRUCT_from_array_tps.png | Bin 0 -> 32178 bytes
 .../bench_serialize_MEDIA_CONTENT_to_array_tps.png | Bin 0 -> 33109 bytes
 ...serialize_MEDIA_CONTENT_to_directBuffer_tps.png | Bin 0 -> 33266 bytes
 .../bench_serialize_SAMPLE_to_array_tps.png        | Bin 0 -> 32126 bytes
 .../bench_serialize_SAMPLE_to_directBuffer_tps.png | Bin 0 -> 33863 bytes
 .../bench_serialize_STRUCT2_to_array_tps.png       | Bin 0 -> 31979 bytes
 ...bench_serialize_STRUCT2_to_directBuffer_tps.png | Bin 0 -> 31389 bytes
 .../bench_serialize_STRUCT_to_array_tps.png        | Bin 0 -> 32803 bytes
 .../bench_serialize_STRUCT_to_directBuffer_tps.png | Bin 0 -> 32062 bytes
 ...ompatible_MEDIA_CONTENT_to_directBuffer_tps.png | Bin 0 -> 33412 bytes
 ...ch_serialize_compatible_SAMPLE_to_array_tps.png | Bin 0 -> 32443 bytes
 ...alize_compatible_SAMPLE_to_directBuffer_tps.png | Bin 0 -> 34231 bytes
 ...h_serialize_compatible_STRUCT2_to_array_tps.png | Bin 0 -> 33595 bytes
 ...lize_compatible_STRUCT2_to_directBuffer_tps.png | Bin 0 -> 32728 bytes
 ...ch_serialize_compatible_STRUCT_to_array_tps.png | Bin 0 -> 32510 bytes
 ...opy_bench_deserialize_BUFFER_from_array_tps.png | Bin 0 -> 26864 bytes
 ...ch_deserialize_BUFFER_from_directBuffer_tps.png | Bin 0 -> 28380 bytes
 ..._deserialize_PRIMITIVE_ARRAY_from_array_tps.png | Bin 0 -> 26675 bytes
 ...alize_PRIMITIVE_ARRAY_from_directBuffer_tps.png | Bin 0 -> 27982 bytes
 ...ro_copy_bench_serialize_BUFFER_to_array_tps.png | Bin 0 -> 25816 bytes
 ..._bench_serialize_BUFFER_to_directBuffer_tps.png | Bin 0 -> 27249 bytes
 ...ench_serialize_PRIMITIVE_ARRAY_to_array_tps.png | Bin 0 -> 26219 bytes
 ...rialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png | Bin 0 -> 30094 bytes
 docs/benchmarks/rust/README.md                     | 118 +++++
 docs/benchmarks/rust/company.png                   | Bin 0 -> 44643 bytes
 docs/benchmarks/rust/ecommerce_data.png            | Bin 0 -> 44956 bytes
 docs/benchmarks/rust/person.png                    | Bin 0 -> 40224 bytes
 docs/benchmarks/rust/simple_list.png               | Bin 0 -> 39423 bytes
 docs/benchmarks/rust/simple_map.png                | Bin 0 -> 45555 bytes
 docs/benchmarks/rust/simple_struct.png             | Bin 0 -> 43007 bytes
 docs/benchmarks/rust/system_data.png               | Bin 0 -> 41417 bytes
 64 files changed, 1573 insertions(+)

diff --git a/docs/benchmarks/cpp/README.md b/docs/benchmarks/cpp/README.md
new file mode 100644
index 0000000000..a3684c5df2
--- /dev/null
+++ b/docs/benchmarks/cpp/README.md
@@ -0,0 +1,62 @@
+# C++ Benchmark Performance Report
+
+_Generated on 2025-12-15 23:03:06_
+
+## How to Generate This Report
+
+```bash
+cd benchmarks/cpp_benchmark/build
+./fory_benchmark --benchmark_format=json --benchmark_out=benchmark_results.json
+cd ..
+python benchmark_report.py --json-file build/benchmark_results.json --output-dir report
+```
+
+## Hardware & OS Info
+
+| Key                        | Value                     |
+| -------------------------- | ------------------------- |
+| OS                         | Darwin 24.6.0             |
+| Machine                    | arm64                     |
+| Processor                  | arm                       |
+| CPU Cores (Physical)       | 12                        |
+| CPU Cores (Logical)        | 12                        |
+| Total RAM (GB)             | 48.0                      |
+| Benchmark Date             | 2025-12-15T23:02:49+08:00 |
+| CPU Cores (from benchmark) | 12                        |
+
+## Benchmark Plots
+
+<p align="center">
+<img src="throughput.png" width="90%">
+</p>
+
+## Benchmark Results
+
+### Timing Results (nanoseconds)
+
+| Datatype     | Operation   | Fory (ns) | Protobuf (ns) | Faster      |
+| ------------ | ----------- | --------- | ------------- | ----------- |
+| Mediacontent | Serialize   | 443.5     | 1982.5        | Fory (4.5x) |
+| Mediacontent | Deserialize | 1349.0    | 2525.2        | Fory (1.9x) |
+| Sample       | Serialize   | 235.4     | 309.7         | Fory (1.3x) |
+| Sample       | Deserialize | 1068.7    | 1397.0        | Fory (1.3x) |
+| Struct       | Serialize   | 109.4     | 170.0         | Fory (1.6x) |
+| Struct       | Deserialize | 129.1     | 161.2         | Fory (1.2x) |
+
+### Throughput Results (ops/sec)
+
+| Datatype     | Operation   | Fory TPS  | Protobuf TPS | Faster      |
+| ------------ | ----------- | --------- | ------------ | ----------- |
+| Mediacontent | Serialize   | 2,254,915 | 504,410      | Fory (4.5x) |
+| Mediacontent | Deserialize | 741,303   | 396,013      | Fory (1.9x) |
+| Sample       | Serialize   | 4,248,973 | 3,229,102    | Fory (1.3x) |
+| Sample       | Deserialize | 935,709   | 715,837      | Fory (1.3x) |
+| Struct       | Serialize   | 9,143,618 | 5,881,005    | Fory (1.6x) |
+| Struct       | Deserialize | 7,746,787 | 6,202,164    | Fory (1.2x) |
+
+### Serialized Data Sizes (bytes)
+
+| Datatype | Fory | Protobuf |
+| -------- | ---- | -------- |
+| Struct   | 32   | 61       |
+| Sample   | 384  | 375      |
diff --git a/docs/benchmarks/cpp/throughput.png b/docs/benchmarks/cpp/throughput.png
new file mode 100644
index 0000000000..e726ebbc19
Binary files /dev/null and b/docs/benchmarks/cpp/throughput.png differ
diff --git a/docs/benchmarks/go/README.md b/docs/benchmarks/go/README.md
new file mode 100644
index 0000000000..582b053c8a
--- /dev/null
+++ b/docs/benchmarks/go/README.md
@@ -0,0 +1,84 @@
+# Go Serialization Benchmark Report
+
+Generated: 2026-02-06 11:26:58
+
+## System Information
+
+- **OS**: Darwin 24.6.0
+- **Architecture**: arm64
+- **Python**: 3.10.8
+
+## Performance Summary
+
+| Data Type        | Operation   | Fory (ops/s) | Protobuf (ops/s) | Msgpack (ops/s) | Fory vs PB | Fory vs MP |
+| ---------------- | ----------- | ------------ | ---------------- | --------------- | ---------- | ---------- |
+| Struct           | Serialize   | 15.16M       | 10.23M           | 5.41M           | 1.48x      | 2.80x      |
+| Struct           | Deserialize | 12.10M       | 11.01M           | 3.23M           | 1.10x      | 3.75x      |
+| Structlist       | Serialize   | 1.58M        | 561K             | 299K            | 2.82x      | 5.28x      |
+| Structlist       | Deserialize | 1.10M        | 529K             | 175K            | 2.09x      | 6.30x      |
+| Sample           | Serialize   | 7.28M        | 2.72M            | 670K            | 2.68x      | 10.87x     |
+| Sample           | Deserialize | 3.79M        | 2.37M            | 376K            | 1.60x      | 10.09x     |
+| Samplelist       | Serialize   | 510K         | 141K             | 38K             | 3.61x      | 13.34x     |
+| Samplelist       | Deserialize | 236K         | 107K             | 19K             | 2.20x      | 12.66x     |
+| Mediacontent     | Serialize   | 3.72M        | 2.12M            | 1.29M           | 1.75x      | 2.88x      |
+| Mediacontent     | Deserialize | 2.34M        | 1.81M            | 698K            | 1.30x      | 3.35x      |
+| Mediacontentlist | Serialize   | 268K         | 110K             | 72K             | 2.44x      | 3.72x      |
+| Mediacontentlist | Deserialize | 138K         | 87K              | 36K             | 1.58x      | 3.86x      |
+
+## Detailed Timing (ns/op)
+
+| Data Type        | Operation   | Fory   | Protobuf | Msgpack |
+| ---------------- | ----------- | ------ | -------- | ------- |
+| Struct           | Serialize   | 66.0   | 97.8     | 184.9   |
+| Struct           | Deserialize | 82.7   | 90.9     | 309.6   |
+| Structlist       | Serialize   | 632.8  | 1783.0   | 3340.0  |
+| Structlist       | Deserialize | 906.4  | 1891.0   | 5709.0  |
+| Sample           | Serialize   | 137.3  | 367.3    | 1492.0  |
+| Sample           | Deserialize | 263.6  | 422.2    | 2661.0  |
+| Samplelist       | Serialize   | 1962.0 | 7087.0   | 26169.0 |
+| Samplelist       | Deserialize | 4234.0 | 9321.0   | 53615.0 |
+| Mediacontent     | Serialize   | 268.8  | 471.1    | 773.7   |
+| Mediacontent     | Deserialize | 426.9  | 553.1    | 1432.0  |
+| Mediacontentlist | Serialize   | 3736.0 | 9107.0   | 13911.0 |
+| Mediacontentlist | Deserialize | 7247.0 | 11435.0  | 27975.0 |
+
+### Serialized Data Sizes (bytes)
+
+| Data Type        | Fory | Protobuf | Msgpack |
+| ---------------- | ---- | -------- | ------- |
+| Struct           | 58   | 61       | 57      |
+| Sample           | 446  | 375      | 524     |
+| MediaContent     | 342  | 301      | 400     |
+| StructList       | 560  | 1260     | 1146    |
+| SampleList       | 7600 | 7560     | 10486   |
+| MediaContentList | 5776 | 6080     | 8006    |
+
+## Performance Charts
+
+### Combined Overview
+
+![Combined Benchmark](benchmark_combined.png)
+
+### Struct
+
+![Struct Benchmark](benchmark_struct.png)
+
+### Structlist
+
+![Structlist Benchmark](benchmark_structlist.png)
+
+### Sample
+
+![Sample Benchmark](benchmark_sample.png)
+
+### Samplelist
+
+![Samplelist Benchmark](benchmark_samplelist.png)
+
+### Mediacontent
+
+![Mediacontent Benchmark](benchmark_mediacontent.png)
+
+### Mediacontentlist
+
+![Mediacontentlist Benchmark](benchmark_mediacontentlist.png)
diff --git a/docs/benchmarks/go/benchmark_combined.png b/docs/benchmarks/go/benchmark_combined.png
new file mode 100644
index 0000000000..fe3ede6c22
Binary files /dev/null and b/docs/benchmarks/go/benchmark_combined.png differ
diff --git a/docs/benchmarks/go/benchmark_mediacontent.png b/docs/benchmarks/go/benchmark_mediacontent.png
new file mode 100644
index 0000000000..dd914fc25b
Binary files /dev/null and b/docs/benchmarks/go/benchmark_mediacontent.png differ
diff --git a/docs/benchmarks/go/benchmark_mediacontentlist.png b/docs/benchmarks/go/benchmark_mediacontentlist.png
new file mode 100644
index 0000000000..8c10cb933d
Binary files /dev/null and b/docs/benchmarks/go/benchmark_mediacontentlist.png differ
diff --git a/docs/benchmarks/go/benchmark_results.txt b/docs/benchmarks/go/benchmark_results.txt
new file mode 100644
index 0000000000..516dc03873
--- /dev/null
+++ b/docs/benchmarks/go/benchmark_results.txt
@@ -0,0 +1,326 @@
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+============================================
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
+goos: darwin
+goarch: arm64
+pkg: github.com/apache/fory/benchmarks/go_benchmark
+cpu: Apple M4 Pro
+BenchmarkFory_Struct_Serialize-12                    	18441836	        65.29 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	18408471	        65.41 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	17736544	        65.19 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	18385110	        65.37 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Struct_Serialize-12                    	18366690	        65.95 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	11775620	       100.3 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12272547	        97.80 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12371797	        97.68 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12184240	        97.62 ns/op	     144 B/op	       2 allocs/op
+BenchmarkProtobuf_Struct_Serialize-12                	12216723	        97.78 ns/op	     144 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 7076667	       171.4 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6900595	       173.6 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6820158	       184.8 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6626666	       176.1 ns/op	     112 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Serialize-12                 	 6930025	       184.9 ns/op	     112 B/op	       2 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	12602647	        85.48 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	14198599	        82.69 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	12750420	        85.79 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	13704170	        83.80 ns/op	      32 B/op	       1 allocs/op
+BenchmarkFory_Struct_Deserialize-12                  	14302634	        82.66 ns/op	      32 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13726815	        87.92 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13350038	        87.81 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13771383	        88.75 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13840743	        90.58 ns/op	      80 B/op	       1 allocs/op
+BenchmarkProtobuf_Struct_Deserialize-12              	13009616	        90.86 ns/op	      80 B/op	       1 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3796537	       304.3 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3963567	       305.9 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3949239	       305.3 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3842962	       307.7 ns/op	      80 B/op	       2 allocs/op
+BenchmarkMsgpack_Struct_Deserialize-12               	 3946874	       309.6 ns/op	      80 B/op	       2 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1887151	       654.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1836488	       635.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1863346	       647.0 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1913204	       627.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_StructList_Serialize-12                	 1887578	       632.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  664448	      1773 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  684133	      1794 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  642586	      1784 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  674518	      1768 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkProtobuf_StructList_Serialize-12            	  668338	      1783 ns/op	    3104 B/op	      23 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  350497	      3433 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  351436	      3409 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  344049	      3398 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  357286	      3361 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkMsgpack_StructList_Serialize-12             	  358231	      3340 ns/op	    4106 B/op	       8 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1335152	       901.9 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1295712	       878.2 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1351540	       889.7 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1327351	       896.7 ns/op	     688 B/op	       3 allocs/op
+BenchmarkFory_StructList_Deserialize-12              	 1326216	       906.4 ns/op	     688 B/op	       3 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  618871	      1914 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  552850	      1867 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  621386	      1887 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  626301	      1916 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkProtobuf_StructList_Deserialize-12          	  619466	      1891 ns/op	    2808 B/op	      28 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  209462	      5707 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  205341	      5680 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  212827	      5715 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  212240	      5742 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkMsgpack_StructList_Deserialize-12           	  214522	      5709 ns/op	    1424 B/op	       7 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8722086	       137.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8074246	       137.2 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8734982	       137.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8774318	       137.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_Sample_Serialize-12                    	 8791104	       137.3 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3474804	       339.3 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3353059	       350.9 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3485572	       359.7 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3293542	       364.4 ns/op	     704 B/op	       2 allocs/op
+BenchmarkProtobuf_Sample_Serialize-12                	 3304266	       367.3 ns/op	     704 B/op	       2 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  815510	      1454 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  814988	      1474 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  819774	      1441 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  806146	      1448 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkMsgpack_Sample_Serialize-12                 	  806767	      1492 ns/op	    2321 B/op	       7 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4371154	       260.9 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4748262	       256.2 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4563691	       259.0 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4679144	       257.7 ns/op	     676 B/op	       9 allocs/op
+BenchmarkFory_Sample_Deserialize-12                  	 4577006	       263.6 ns/op	     676 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2827587	       426.9 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2790972	       424.5 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2761682	       436.8 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2730283	       432.4 ns/op	     708 B/op	       9 allocs/op
+BenchmarkProtobuf_Sample_Deserialize-12              	 2829603	       422.2 ns/op	     708 B/op	       9 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  445099	      2801 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  437914	      2686 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  416235	      2660 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  448528	      2650 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkMsgpack_Sample_Deserialize-12               	  447135	      2661 ns/op	    1576 B/op	      38 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  609176	      1948 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  612290	      1958 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  605318	      1950 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  610993	      1945 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_SampleList_Serialize-12                	  612297	      1962 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  167353	      6748 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  170196	      6906 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  170259	      7246 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  170742	      7127 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkProtobuf_SampleList_Serialize-12            	  167684	      7087 ns/op	   14816 B/op	      23 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   46962	     25632 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   47451	     25432 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   44647	     26471 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   46993	     25869 ns/op	   32793 B/op	      11 allocs/op
+BenchmarkMsgpack_SampleList_Serialize-12             	   46513	     26169 ns/op	   32792 B/op	      11 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  269730	      4251 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  287401	      4202 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  283461	      4176 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  278598	      4257 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkFory_SampleList_Deserialize-12              	  285021	      4234 ns/op	   13952 B/op	     163 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  130734	      9285 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  132328	      9157 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  132595	      9258 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  128911	      9332 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkProtobuf_SampleList_Deserialize-12          	  124810	      9321 ns/op	   20872 B/op	     188 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   22225	     53384 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   22498	     54968 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   21262	     54571 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   21877	     54363 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkMsgpack_SampleList_Deserialize-12           	   21978	     53615 ns/op	   37251 B/op	     727 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4530111	       265.7 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4538586	       267.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4477569	       264.6 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4504632	       270.4 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContent_Serialize-12              	 4519728	       268.8 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2446335	       486.8 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2468845	       489.5 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2463714	       468.9 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2605141	       467.7 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkProtobuf_MediaContent_Serialize-12          	 2586032	       471.1 ns/op	    1144 B/op	      11 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1496350	       787.2 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1533099	       794.6 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1533223	       786.9 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1558996	       778.9 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkMsgpack_MediaContent_Serialize-12           	 1535682	       773.7 ns/op	    1168 B/op	       6 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2840757	       421.6 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2805544	       429.2 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2819227	       433.5 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2805493	       426.6 ns/op	     656 B/op	      13 allocs/op
+BenchmarkFory_MediaContent_Deserialize-12            	 2828582	       426.9 ns/op	     656 B/op	      13 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2141352	       569.0 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2052590	       559.8 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2134398	       550.8 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2151742	       567.4 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkProtobuf_MediaContent_Deserialize-12        	 2155804	       553.1 ns/op	    1088 B/op	      21 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  838147	      1376 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  824925	      1392 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  814362	      1414 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  837973	      1399 ns/op	     896 B/op	      17 allocs/op
+BenchmarkMsgpack_MediaContent_Deserialize-12         	  850816	      1432 ns/op	     896 B/op	      17 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  320854	      3724 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  323788	      3725 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  323928	      3688 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  320772	      3652 ns/op	       0 B/op	       0 allocs/op
+BenchmarkFory_MediaContentList_Serialize-12          	  325976	      3736 ns/op	       0 B/op	       0 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  128820	      9015 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  133196	      9049 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  133237	      9152 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  131954	      8952 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkProtobuf_MediaContentList_Serialize-12      	  132843	      9107 ns/op	   22848 B/op	     203 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   86242	     13984 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   84384	     14032 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   83804	     14321 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   87357	     14185 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkMsgpack_MediaContentList_Serialize-12       	   85074	     13911 ns/op	   16880 B/op	      30 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  158547	      7564 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  159993	      7508 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  159046	      7447 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  163632	      7268 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkFory_MediaContentList_Deserialize-12        	  163434	      7247 ns/op	   13040 B/op	     243 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	   92965	     11322 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  105206	     11297 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  104979	     11205 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  105859	     11327 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkProtobuf_MediaContentList_Deserialize-12    	  105524	     11435 ns/op	   25400 B/op	     428 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   43263	     27244 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   44388	     27167 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   44185	     27271 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   43345	     27499 ns/op	   20058 B/op	     307 allocs/op
+BenchmarkMsgpack_MediaContentList_Deserialize-12     	   43718	     27975 ns/op	   20058 B/op	     307 allocs/op
+PASS
+ok  	github.com/apache/fory/benchmarks/go_benchmark	256.707s
diff --git a/docs/benchmarks/go/benchmark_sample.png b/docs/benchmarks/go/benchmark_sample.png
new file mode 100644
index 0000000000..7984bae39d
Binary files /dev/null and b/docs/benchmarks/go/benchmark_sample.png differ
diff --git a/docs/benchmarks/go/benchmark_samplelist.png b/docs/benchmarks/go/benchmark_samplelist.png
new file mode 100644
index 0000000000..0f88771144
Binary files /dev/null and b/docs/benchmarks/go/benchmark_samplelist.png differ
diff --git a/docs/benchmarks/go/benchmark_struct.png b/docs/benchmarks/go/benchmark_struct.png
new file mode 100644
index 0000000000..e07c004ce7
Binary files /dev/null and b/docs/benchmarks/go/benchmark_struct.png differ
diff --git a/docs/benchmarks/go/benchmark_structlist.png b/docs/benchmarks/go/benchmark_structlist.png
new file mode 100644
index 0000000000..5a97780ac4
Binary files /dev/null and b/docs/benchmarks/go/benchmark_structlist.png differ
diff --git a/docs/benchmarks/go/serialized_sizes.txt b/docs/benchmarks/go/serialized_sizes.txt
new file mode 100644
index 0000000000..5a54edec6e
--- /dev/null
+++ b/docs/benchmarks/go/serialized_sizes.txt
@@ -0,0 +1,27 @@
+Serialized Sizes (bytes):
+============================================
+NumericStruct:
+  Fory:     58 bytes
+  Protobuf: 61 bytes
+  Msgpack:  57 bytes
+Sample:
+  Fory:     446 bytes
+  Protobuf: 375 bytes
+  Msgpack:  524 bytes
+MediaContent:
+  Fory:     342 bytes
+  Protobuf: 301 bytes
+  Msgpack:  400 bytes
+StructList:
+  Fory:     560 bytes
+  Protobuf: 1260 bytes
+  Msgpack:  1146 bytes
+SampleList:
+  Fory:     7600 bytes
+  Protobuf: 7560 bytes
+  Msgpack:  10486 bytes
+MediaContentList:
+  Fory:     5776 bytes
+  Protobuf: 6080 bytes
+  Msgpack:  8006 bytes
+============================================
diff --git a/docs/benchmarks/java/README.md b/docs/benchmarks/java/README.md
new file mode 100644
index 0000000000..1d2019aa83
--- /dev/null
+++ b/docs/benchmarks/java/README.md
@@ -0,0 +1,577 @@
+# 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="compatible/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="compatible/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="compatible/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="compatible/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   |
+| Fory           | serialize              | array        | SAMPLE        | False      | 3570966.469087  |
+| Fory           | serialize              | array        | SAMPLE        | True       | 1767693.83509   |
+| Fory           | serialize              | array        | MEDIA_CONTENT | False      | 3031642.924542  |
+| Fory           | serialize              | array        | MEDIA_CONTENT | True       | 2450384.600246  |
+| Fory           | serialize              | array        | STRUCT        | False      | 7501415.56726   |
+| Fory           | serialize              | array        | STRUCT        | True       | 6264439.154428  |
+| Fory           | serialize              | array        | STRUCT2       | False      | 3586126.623874  |
+| Fory           | serialize              | array        | STRUCT2       | True       | 3306474.506382  |
+| Fory           | serialize              | directBuffer | SAMPLE        | False      | 3684487.760591  |
+| Fory           | serialize              | directBuffer | SAMPLE        | True       | 1826456.709478  |
+| Fory           | serialize              | directBuffer | MEDIA_CONTENT | False      | 2479862.129632  |
+| Fory           | serialize              | directBuffer | MEDIA_CONTENT | True       | 1938527.588331  |
+| Fory           | serialize              | directBuffer | STRUCT        | False      | 9834243.243204  |
+| Fory           | serialize              | directBuffer | STRUCT        | True       | 7551780.823133  |
+| Fory           | serialize              | directBuffer | STRUCT2       | False      | 2643155.135327  |
+| Fory           | serialize              | directBuffer | STRUCT2       | True       | 2391110.083108  |
+| Fory           | serialize_compatible   | array        | SAMPLE        | False      | 3604596.465625  |
+| Fory           | serialize_compatible   | array        | SAMPLE        | True       | 1619648.337293  |
+| Fory           | serialize_compatible   | array        | MEDIA_CONTENT | False      | 1679272.036243  |
+| Fory           | serialize_compatible   | array        | MEDIA_CONTENT | True       | 1406736.538716  |
+| Fory           | serialize_compatible   | array        | STRUCT        | False      | 3530406.108869  |
+| Fory           | serialize_compatible   | array        | STRUCT        | True       | 3293059.098127  |
+| Fory           | serialize_compatible   | array        | STRUCT2       | False      | 2773368.99768   |
+| Fory           | serialize_compatible   | array        | STRUCT2       | True       | 2564174.550276  |
+| Fory           | serialize_compatible   | directBuffer | SAMPLE        | False      | 3484533.218305  |
+| Fory           | serialize_compatible   | directBuffer | SAMPLE        | True       | 1730824.630648  |
+| Fory           | serialize_compatible   | directBuffer | MEDIA_CONTENT | False      | 1710680.937387  |
+| Fory           | serialize_compatible   | directBuffer | MEDIA_CONTENT | True       | 1149999.473994  |
+| Fory           | serialize_compatible   | directBuffer | STRUCT        | False      | 2653169.568374  |
+| Fory           | serialize_compatible   | directBuffer | STRUCT        | True       | 2393817.762938  |
+| Fory           | serialize_compatible   | directBuffer | STRUCT2       | False      | 1912402.937879  |
+| Fory           | serialize_compatible   | directBuffer | STRUCT2       | True       | 1848338.968058  |
+| Forymetashared | serialize_compatible   | array        | SAMPLE        | False      | 4409055.687063  |
+| Forymetashared | serialize_compatible   | array        | SAMPLE        | True       | 1840705.439334  |
+| Forymetashared | serialize_compatible   | array        | MEDIA_CONTENT | False      | 2992488.235281  |
+| Forymetashared | serialize_compatible   | array        | MEDIA_CONTENT | True       | 2058738.716953  |
+| Forymetashared | serialize_compatible   | array        | STRUCT        | False      | 9204444.777172  |
+| Forymetashared | serialize_compatible   | array        | STRUCT        | True       | 7064625.291374  |
+| Forymetashared | serialize_compatible   | array        | STRUCT2       | False      | 2575824.143864  |
+| Forymetashared | serialize_compatible   | array        | STRUCT2       | True       | 3543082.528217  |
+| Forymetashared | serialize_compatible   | directBuffer | SAMPLE        | False      | 5043538.364886  |
+| Forymetashared | serialize_compatible   | directBuffer | SAMPLE        | True       | 1859289.705838  |
+| Forymetashared | serialize_compatible   | directBuffer | MEDIA_CONTENT | False      | 2491443.556971  |
+| Forymetashared | serialize_compatible   | directBuffer | MEDIA_CONTENT | True       | 1804349.244125  |
+| Forymetashared | serialize_compatible   | directBuffer | STRUCT        | False      | 11650249.648715 |
+| Forymetashared | serialize_compatible   | directBuffer | STRUCT        | True       | 8702412.752357  |
+| Forymetashared | serialize_compatible   | directBuffer | STRUCT2       | False      | 2714748.572448  |
+| Forymetashared | 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   |
+| Fory           | deserialize            | array        | SAMPLE        | False      | 2069988.624415  |
+| Fory           | deserialize            | array        | SAMPLE        | True       | 1797942.442313  |
+| Fory           | deserialize            | array        | MEDIA_CONTENT | False      | 2054066.903469  |
+| Fory           | deserialize            | array        | MEDIA_CONTENT | True       | 1507767.206603  |
+| Fory           | deserialize            | array        | STRUCT        | False      | 4595230.434552  |
+| Fory           | deserialize            | array        | STRUCT        | True       | 4634753.596131  |
+| Fory           | deserialize            | array        | STRUCT2       | False      | 1126298.35955   |
+| Fory           | deserialize            | array        | STRUCT2       | True       | 1046649.083082  |
+| Fory           | deserialize            | directBuffer | SAMPLE        | False      | 2429791.078395  |
+| Fory           | deserialize            | directBuffer | SAMPLE        | True       | 1958815.397807  |
+| Fory           | deserialize            | directBuffer | MEDIA_CONTENT | False      | 1502746.028159  |
+| Fory           | deserialize            | directBuffer | MEDIA_CONTENT | True       | 1290593.975753  |
+| Fory           | deserialize            | directBuffer | STRUCT        | False      | 5012002.859236  |
+| Fory           | deserialize            | directBuffer | STRUCT        | True       | 4864329.316938  |
+| Fory           | deserialize            | directBuffer | STRUCT2       | False      | 1117586.457565  |
+| Fory           | deserialize            | directBuffer | STRUCT2       | True       | 1018277.848128  |
+| Fory           | deserialize_compatible | array        | SAMPLE        | False      | 2496046.895861  |
+| Fory           | deserialize_compatible | array        | SAMPLE        | True       | 1834139.395757  |
+| Fory           | deserialize_compatible | array        | MEDIA_CONTENT | False      | 1441671.70632   |
+| Fory           | deserialize_compatible | array        | MEDIA_CONTENT | True       | 1121136.039627  |
+| Fory           | deserialize_compatible | array        | STRUCT        | False      | 2110335.039275  |
+| Fory           | deserialize_compatible | array        | STRUCT        | True       | 2135681.982674  |
+| Fory           | deserialize_compatible | array        | STRUCT2       | False      | 849507.176263   |
+| Fory           | deserialize_compatible | array        | STRUCT2       | True       | 815120.319155   |
+| Fory           | deserialize_compatible | directBuffer | SAMPLE        | False      | 2308111.633661  |
+| Fory           | deserialize_compatible | directBuffer | SAMPLE        | True       | 1820490.585648  |
+| Fory           | deserialize_compatible | directBuffer | MEDIA_CONTENT | False      | 1256034.732514  |
+| Fory           | deserialize_compatible | directBuffer | MEDIA_CONTENT | True       | 1054942.751816  |
+| Fory           | deserialize_compatible | directBuffer | STRUCT        | False      | 1596464.248141  |
+| Fory           | deserialize_compatible | directBuffer | STRUCT        | True       | 1684681.074242  |
+| Fory           | deserialize_compatible | directBuffer | STRUCT2       | False      | 784036.589363   |
+| Fory           | deserialize_compatible | directBuffer | STRUCT2       | True       | 782679.662083   |
+| Forymetashared | deserialize_compatible | array        | SAMPLE        | False      | 2485564.396196  |
+| Forymetashared | deserialize_compatible | array        | SAMPLE        | True       | 2002938.794909  |
+| Forymetashared | deserialize_compatible | array        | MEDIA_CONTENT | False      | 2479742.810882  |
+| Forymetashared | deserialize_compatible | array        | MEDIA_CONTENT | True       | 1623938.202345  |
+| Forymetashared | deserialize_compatible | array        | STRUCT        | False      | 4978833.206806  |
+| Forymetashared | deserialize_compatible | array        | STRUCT        | True       | 4807963.88252   |
+| Forymetashared | deserialize_compatible | array        | STRUCT2       | False      | 1201998.142474  |
+| Forymetashared | deserialize_compatible | array        | STRUCT2       | True       | 1058423.614156  |
+| Forymetashared | deserialize_compatible | directBuffer | SAMPLE        | False      | 2489261.533644  |
+| Forymetashared | deserialize_compatible | directBuffer | SAMPLE        | True       | 1927548.827586  |
+| Forymetashared | deserialize_compatible | directBuffer | MEDIA_CONTENT | False      | 1718098.363961  |
+| Forymetashared | deserialize_compatible | directBuffer | MEDIA_CONTENT | True       | 1333345.536684  |
+| Forymetashared | deserialize_compatible | directBuffer | STRUCT        | False      | 5149070.65783   |
+| Forymetashared | deserialize_compatible | directBuffer | STRUCT        | True       | 5137500.621288  |
+| Forymetashared | deserialize_compatible | directBuffer | STRUCT2       | False      | 1131212.586953  |
+| Forymetashared | 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   |
+| Fory | deserialize | 200        | array        | PRIMITIVE_ARRAY | 986136.067809  |
+| Fory | deserialize | 200        | array        | BUFFER          | 3302149.383135 |
+| Fory | deserialize | 200        | directBuffer | PRIMITIVE_ARRAY | 991807.969328  |
+| Fory | deserialize | 200        | directBuffer | BUFFER          | 3113115.471758 |
+| Fory | deserialize | 1000       | array        | PRIMITIVE_ARRAY | 205671.992736  |
+| Fory | deserialize | 1000       | array        | BUFFER          | 2831942.848999 |
+| Fory | deserialize | 1000       | directBuffer | PRIMITIVE_ARRAY | 202475.242341  |
+| Fory | deserialize | 1000       | directBuffer | BUFFER          | 3397690.327371 |
+| Fory | deserialize | 5000       | array        | PRIMITIVE_ARRAY | 40312.590172   |
+| Fory | deserialize | 5000       | array        | BUFFER          | 3296658.120035 |
+| Fory | deserialize | 5000       | directBuffer | PRIMITIVE_ARRAY | 40413.743717   |
+| Fory | deserialize | 5000       | directBuffer | BUFFER          | 3284441.570594 |
+| Fory | serialize   | 200        | array        | PRIMITIVE_ARRAY | 8297232.942927 |
+| Fory | serialize   | 200        | array        | BUFFER          | 5123572.914045 |
+| Fory | serialize   | 200        | directBuffer | PRIMITIVE_ARRAY | 8335248.350301 |
+| Fory | serialize   | 200        | directBuffer | BUFFER          | 5400346.890126 |
+| Fory | serialize   | 1000       | array        | PRIMITIVE_ARRAY | 8772856.921028 |
+| Fory | serialize   | 1000       | array        | BUFFER          | 4979590.929127 |
+| Fory | serialize   | 1000       | directBuffer | PRIMITIVE_ARRAY | 8207563.785251 |
+| Fory | serialize   | 1000       | directBuffer | BUFFER          | 5376191.775007 |
+| Fory | serialize   | 5000       | array        | PRIMITIVE_ARRAY | 8027439.580246 |
+| Fory | serialize   | 5000       | array        | BUFFER          | 5018916.32477  |
+| Fory | serialize   | 5000       | directBuffer | PRIMITIVE_ARRAY | 7695981.988316 |
+| Fory | 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  |
diff --git a/docs/benchmarks/java/compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png b/docs/benchmarks/java/compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png
new file mode 100644
index 0000000000..68fef5a920
Binary files /dev/null and b/docs/benchmarks/java/compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png differ
diff --git a/docs/benchmarks/java/compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png b/docs/benchmarks/java/compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png
new file mode 100644
index 0000000000..94529bb833
Binary files /dev/null and b/docs/benchmarks/java/compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png b/docs/benchmarks/java/compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png
new file mode 100644
index 0000000000..87782f2b15
Binary files /dev/null and b/docs/benchmarks/java/compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png differ
diff --git a/docs/benchmarks/java/compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png b/docs/benchmarks/java/compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png
new file mode 100644
index 0000000000..4093a4a295
Binary files /dev/null and b/docs/benchmarks/java/compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/data/jmh-jdk-11-deserialization.csv b/docs/benchmarks/java/data/jmh-jdk-11-deserialization.csv
new file mode 100644
index 0000000000..98760a4721
--- /dev/null
+++ b/docs/benchmarks/java/data/jmh-jdk-11-deserialization.csv
@@ -0,0 +1,153 @@
+"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: bufferType","Param: objectType","Param: references"
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,473409.796491,250793.361170,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,428315.502365,191770.682411,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,363455.785182,44717.666948,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,304371.728638,74831.791688,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,357887.235311,218092.594151,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,353480.554035,229239.505256,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,280131.091068,89472.347221,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,260649.308016,165597.762734,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,441027.550809,321712.847983,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,420523.770904,122531.658151,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,311691.658687,185300.664992,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,251820.171513,894743.730727,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,352441.597147,109488.413174,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,334574.303484,89858.329407,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,262519.858810,138990.948859,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fst_deserialize","thrpt",1,3,234973.637096,568162.582389,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,2069988.624415,1501625.089719,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1797942.442313,3541577.357052,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,2054066.903469,3314161.094630,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1507767.206603,1662320.958961,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,4595230.434552,678411.427346,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,4634753.596131,582102.492158,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1126298.359550,856691.704987,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1046649.083082,1816153.563648,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,2229791.078395,2950833.975767,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1958815.397807,381903.427430,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1502746.028159,1759759.267183,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1290593.975753,246089.810346,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,5012002.859236,3360944.705659,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,4864329.316938,4357833.300692,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1117586.457565,323438.118804,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize","thrpt",1,3,1018277.848128,1141314.435153,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2296046.895861,2532372.600048,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1834139.395757,1021897.505849,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1441671.706320,317052.609754,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1121136.039627,979316.642796,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2110335.039275,389404.889706,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2135681.982674,1140328.709799,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,849507.176263,77466.989680,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,815120.319155,110547.743648,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,2308111.633661,1699117.497565,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1820490.585648,244290.391445,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1256034.732514,811833.294307,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1054942.751816,180122.424477,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1596464.248141,1624412.248391,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,1684681.074242,865262.572050,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,784036.589363,189745.805570,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.fory_deserialize_compatible","thrpt",1,3,782679.662083,232459.929272,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2485564.396196,404678.689647,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2002938.794909,254819.284313,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2279742.810882,1984221.778254,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1623938.202345,902985.831204,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,4978833.206806,1201415.339844,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,4807963.882520,981981.561987,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1201998.142474,446807.356524,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1058423.614156,2254684.330438,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,2289261.533644,330913.304260,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1927548.827586,2169684.221478,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1718098.363961,1096276.962216,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1333345.536684,1110700.750020,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,5149070.657830,3249519.880480,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,5137500.621288,3988987.937014,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1131212.586953,240674.468318,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.forymetashared_deserialize_compatible","thrpt",1,3,1089162.408165,294119.059967,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,119471.518388,29846.632785,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,121106.002978,27710.578092,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,118156.072284,4767.841380,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,120016.594171,41255.986380,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,84709.108821,132894.355932,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,91050.370224,17939.461828,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,69758.767783,10886.276794,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,68616.029248,13625.851120,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,117806.916589,35449.535259,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,121940.783597,54381.355274,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,111067.942626,136178.034974,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,121820.821260,36972.450957,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,91151.633583,18401.579776,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,91037.205901,58868.732797,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,66866.108653,38522.707093,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize","thrpt",1,3,65338.345185,56556.914062,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,121898.105768,55415.594537,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,121297.485903,33990.621079,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,121619.090797,6094.683470,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,119994.104050,24538.128667,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,88617.486795,40076.835119,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,90206.654212,19313.248466,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,63703.763814,132184.298414,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,69521.573119,8875.645591,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,124044.417439,41135.181705,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,120276.449497,87827.771405,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,107594.474890,81084.454215,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,116531.023438,141591.979641,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,89580.561575,23464.095972,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,84407.472531,46007.731889,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,69342.030965,17706.784671,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.hession_deserialize_compatible","thrpt",1,3,68542.055543,31793.805138,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29309.573998,765.998843,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,27466.003923,14896.452629,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,38536.250402,28217.590983,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,38957.191090,23931.545367,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29603.066599,10373.666720,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29727.744196,15820.774882,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14888.805111,842.165916,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14034.100664,13936.787605,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,28128.457935,5385.055284,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,28221.014735,15281.277719,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,40512.632076,8592.454839,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,37030.594632,9683.316145,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,28717.004518,17023.663871,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,29549.998286,13823.854047,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14652.043788,2419.900104,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.jdk_deserialize","thrpt",1,3,14425.886048,8723.095052,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,979173.981159,178146.966897,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,716438.884369,623966.984928,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,577631.234369,221011.018380,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,365530.417232,214946.853015,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,607750.343557,99638.164976,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,552802.227807,126286.013177,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,275984.042401,9405.143983,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,222710.554833,45168.519253,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,983538.936801,1112062.949472,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,762889.302732,279678.610328,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,389473.174523,43058.395501,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,306995.220799,57411.579647,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,910534.169114,1888677.766640,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,914404.107564,357717.816934,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,319247.256793,217674.935649,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize","thrpt",1,3,249105.828416,131690.474985,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,255086.928308,23672.392381,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,238811.995510,18059.118666,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,180882.860363,69339.581545,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,154311.211540,23065.912064,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,78771.635309,45155.641241,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,72805.937649,16849.888437,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,60602.285743,61404.274046,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,62729.908347,32805.651539,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,201993.787890,41567.224827,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,174534.710870,96357.498949,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,134485.160300,104898.991148,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,119311.787329,66580.856795,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,58574.904225,140682.248378,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,60685.320299,24159.853451,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,54637.329134,14011.283798,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.kryo_deserialize_compatible","thrpt",1,3,51761.569591,61030.640534,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,619338.385412,275705.847169,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,951662.019963,165160.853007,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,517381.168594,313746.662696,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,416212.973861,119393.345217,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,624804.978534,147685.682690,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,964664.641598,218386.902856,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,538922.947147,59168.303230,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeDeserializeSuite.protostuff_deserialize","thrpt",1,3,425523.315814,179264.359952,"ops/s",directBuffer,STRUCT2,false
diff --git a/docs/benchmarks/java/data/jmh-jdk-11-serialization.csv b/docs/benchmarks/java/data/jmh-jdk-11-serialization.csv
new file mode 100644
index 0000000000..2e985751a7
--- /dev/null
+++ b/docs/benchmarks/java/data/jmh-jdk-11-serialization.csv
@@ -0,0 +1,153 @@
+"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: bufferType","Param: objectType","Param: references"
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,915907.574306,87627.907529,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,731869.156376,37845.555465,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,751892.023189,174327.010719,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,583859.907758,320047.618377,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,882178.995727,294884.724923,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,757753.756691,605180.489112,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,371762.982661,80513.482138,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,380638.700267,101974.434105,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,902302.261168,474054.277143,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,723614.066770,77429.645491,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,728001.080250,75699.111305,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,595679.580108,117269.848918,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,807847.663261,67842.801069,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,762088.935404,575559.070335,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,365317.705376,138313.634773,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fst_serialize","thrpt",1,3,370851.880711,66834.323719,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3570966.469087,152949.902180,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,1767693.835090,263146.035836,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3031642.924542,567213.986117,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2250384.600246,529709.299207,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,7501415.567260,6672023.542025,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,6264439.154428,976363.317001,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3586126.623874,1966282.728305,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3306474.506382,869558.338568,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,3684487.760591,882227.920611,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,1826456.709478,1377648.673630,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2479862.129632,1498299.302699,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,1938527.588331,148125.034055,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,9834223.243204,5284494.290641,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,7551780.823133,744016.111639,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2643155.135327,200764.008652,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize","thrpt",1,3,2391110.083108,2608567.411194,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3604596.465625,1232634.245435,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1619648.337293,212055.067245,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1679272.036223,788041.322785,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1406736.538716,263608.222325,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3530406.108869,3125642.741982,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3293059.098127,96940.669016,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2773368.997680,503239.905176,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2564174.550276,978139.792610,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,3484533.218305,476583.192148,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1730822.630648,410016.597939,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1710680.937387,307207.222026,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1149999.473994,140915.968294,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2653169.568374,535312.987476,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,2393817.762938,380997.375838,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1912402.937879,284090.793301,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.fory_serialize_compatible","thrpt",1,3,1848338.968058,108311.846780,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,4409055.687063,112740.443049,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1840705.439334,516764.580627,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2992288.235281,867622.163323,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2058738.716953,2388681.798594,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,9204444.777172,1526628.258403,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,7064625.291374,2655795.498346,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2575824.143864,2216634.295140,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,3543082.528217,393858.603613,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,5043538.364886,2797987.191909,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1859289.705838,366893.710607,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2291443.556971,3167882.958411,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1804349.244125,481995.792041,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,11650229.648715,1101289.207239,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,8702412.752357,1116617.972427,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,2714748.572248,284462.787825,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.forymetashared_serialize_compatible","thrpt",1,3,1866073.031851,1521156.537508,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,220386.502846,60892.430853,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,192414.014211,34217.359956,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,367782.358049,54538.846197,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,329427.470680,530871.650379,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,258233.998931,145299.453488,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,260845.209485,90601.426407,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,56056.080075,3919.171009,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,60038.879790,6808.083631,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,220981.308085,153633.380796,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,211949.960255,231322.136517,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,372477.138150,39349.725456,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,353376.085025,11334.885856,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,266481.009225,113518.076189,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,261762.594966,64652.028148,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,55924.319442,28173.043405,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize","thrpt",1,3,56674.065604,2667.957614,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,234454.975158,5232.236462,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,206174.173039,54217.176504,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,377195.903772,33297.468886,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,351657.879556,10762.766962,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,258650.663523,64158.329095,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,263564.913879,101476.568014,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,58509.125342,10836.872797,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,55552.977735,37802.538138,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,194761.224263,8828.274695,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,212840.483308,50730.019909,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,371729.727192,136063.629978,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,343834.954942,13355.085558,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,249221.452137,261034.656030,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,263623.143601,32854.227410,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,58908.567439,4137.470432,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.hession_serialize_compatible","thrpt",1,3,55524.373547,668.406873,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,118374.836631,34704.407553,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,119858.140625,49308.850176,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,137989.198821,40017.148924,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,140260.668888,57308.595910,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,155908.244240,20385.278504,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,151258.539369,12676.385578,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,36846.049162,5491.880967,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,38183.705811,14778.659439,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,118273.584257,18950.629048,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,108263.040839,14982.910444,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,138567.623369,24365.255940,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,140158.673910,54416.908878,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,154875.908438,11984.781345,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,156404.686214,58131.602098,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,37444.967981,14948.012339,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.jdk_serialize","thrpt",1,3,35798.679246,36641.428549,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,1105365.931217,162251.803619,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,734215.482291,79297.387490,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,730792.521676,678674.266715,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,445251.084327,85646.179264,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,558194.100861,257156.321315,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,557542.628765,63084.390134,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,325172.969175,20774.334333,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,259863.332448,86373.633851,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,1376560.302168,147424.342310,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,932887.968348,249800.928765,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,608972.517580,249598.971835,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,359875.473951,274870.064607,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,1078046.011115,249527.480472,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,853350.408656,126642.692106,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,355688.882786,37587.645927,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize","thrpt",1,3,338960.426033,36185.446014,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,378907.663184,280309.649766,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,320815.567701,455179.720989,"ops/s",array,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,188911.259146,97827.317807,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,145782.916427,81270.905462,"ops/s",array,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,145964.199559,88578.667153,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,136180.832879,167433.069232,"ops/s",array,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,125807.748004,23178.451287,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,114983.546343,7341.380140,"ops/s",array,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,296102.615094,18485.738321,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,276757.392449,61173.636852,"ops/s",directBuffer,SAMPLE,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,185363.714829,121440.885632,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,142836.961878,12450.918452,"ops/s",directBuffer,MEDIA_CONTENT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,106695.800225,13463.570576,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,106458.212005,2994.065295,"ops/s",directBuffer,STRUCT,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,92130.672361,9515.661170,"ops/s",directBuffer,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.kryo_serialize_compatible","thrpt",1,3,88989.724768,9379.338279,"ops/s",directBuffer,STRUCT2,true
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,663272.710783,522116.492895,"ops/s",array,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,780618.761219,406063.945348,"ops/s",array,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,330975.350403,196475.862643,"ops/s",array,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,322563.440433,201276.713653,"ops/s",array,STRUCT2,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,693641.589806,43883.803566,"ops/s",directBuffer,SAMPLE,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,805941.345157,91281.699006,"ops/s",directBuffer,MEDIA_CONTENT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,340262.650047,152117.387028,"ops/s",directBuffer,STRUCT,false
+"org.apache.fory.benchmark.UserTypeSerializeSuite.protostuff_serialize","thrpt",1,3,325093.716261,56485.972228,"ops/s",directBuffer,STRUCT2,false
diff --git a/docs/benchmarks/java/data/jmh-jdk-11-zerocopy.csv b/docs/benchmarks/java/data/jmh-jdk-11-zerocopy.csv
new file mode 100644
index 0000000000..503298291f
--- /dev/null
+++ b/docs/benchmarks/java/data/jmh-jdk-11-zerocopy.csv
@@ -0,0 +1,73 @@
+"Benchmark","Mode","Threads","Samples","Score","Score Error (99.9%)","Unit","Param: array_size","Param: bufferType","Param: dataType","Param: references"
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,219333.990504,40075.312705,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,657754.887247,408901.031753,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,179604.045774,45387.509931,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,598421.278941,135411.381215,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,53100.903684,17709.358858,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,422147.154601,528539.529166,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,38572.001768,24685.893533,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,298929.116572,135040.133488,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,10672.872798,11519.184075,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,136934.604328,19269.032565,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,8561.694533,2137.867210,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_deserialize","thrpt",1,3,77950.612503,83587.484192,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,313986.053417,29311.641179,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,2400193.220466,242732.420524,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,294132.218623,60640.778775,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,2282550.111756,93004.652618,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,67209.107012,5947.935958,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,1805557.477810,5232839.112456,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,66108.014322,16869.542536,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,1644789.427010,54907.475118,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,14997.400124,12425.308762,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,811029.402136,39593.863849,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,15000.378818,2219.583522,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fst_serialize","thrpt",1,3,477148.540850,34970.176073,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,986136.067809,274606.792449,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3302149.383135,3166455.521704,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,991807.969328,296490.837932,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3113115.471758,4861106.592529,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,205671.992736,127494.951753,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,2831942.848999,1720214.698856,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,202275.242341,56270.238293,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3397690.327371,146058.097383,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,40312.590172,11836.614114,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3296658.120035,2199676.238015,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,40413.743717,9893.735875,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_deserialize","thrpt",1,3,3284441.570594,998247.999163,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8297232.942927,6613235.386482,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5123572.914045,9342104.794019,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8335248.350301,2796789.944593,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5400346.890126,7654935.504676,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8772856.921028,1984208.178343,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,4979590.929127,5568756.926202,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8207563.785251,4153794.222735,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5376191.775007,9167580.616022,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,8027439.580226,6148996.477681,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5018916.322770,1424045.598203,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,7695981.988316,578662.201123,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.fory_serialize","thrpt",1,3,5330897.682960,8055585.038901,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,146675.360652,23502.675233,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,1296284.787720,297204.673569,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,518713.299422,600548.228171,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,1004844.498712,552313.083272,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,30409.835023,9562.322209,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,721266.541130,62426.822891,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,112132.004609,6625.327605,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,592972.713203,511777.226637,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,6122.351228,3021.683209,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,147251.846111,278375.379465,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,21826.040410,2246.004993,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_deserialize","thrpt",1,3,148614.476829,87146.409451,"ops/s",5000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,147342.606262,138864.952435,"ops/s",200,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1985187.977633,70426.638387,"ops/s",200,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,972683.763633,604464.052899,"ops/s",200,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1739454.519770,1053963.541481,"ops/s",200,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,31395.721514,3652.506399,"ops/s",1000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1616159.671230,2722436.839807,"ops/s",1000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,209183.090868,25323.702489,"ops/s",1000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,1377272.568510,203974.331559,"ops/s",1000,directBuffer,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,6248.006967,783.226602,"ops/s",5000,array,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,711287.533377,86363.201941,"ops/s",5000,array,BUFFER,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,43565.678616,4221.267495,"ops/s",5000,directBuffer,PRIMITIVE_ARRAY,false
+"org.apache.fory.benchmark.ZeroCopySuite.kryo_serialize","thrpt",1,3,707092.956534,298737.951680,"ops/s",5000,directBuffer,BUFFER,false
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png
new file mode 100644
index 0000000000..70a4e1fdd3
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_directBuffer_tps.png
new file mode 100644
index 0000000000..74817abc1e
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_array_tps.png
new file mode 100644
index 0000000000..dcfe30633f
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_array_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_directBuffer_tps.png
new file mode 100644
index 0000000000..045e5c02a0
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_array_tps.png
new file mode 100644
index 0000000000..444b1aa7e5
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_array_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_directBuffer_tps.png
new file mode 100644
index 0000000000..fec642a64f
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_array_tps.png
new file mode 100644
index 0000000000..8ec91efc87
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_array_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_directBuffer_tps.png
new file mode 100644
index 0000000000..ac161c9dda
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_directBuffer_tps.png
new file mode 100644
index 0000000000..830642b624
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_array_tps.png
new file mode 100644
index 0000000000..8e1a429e20
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_array_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_directBuffer_tps.png
new file mode 100644
index 0000000000..380de0a1dc
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_array_tps.png
new file mode 100644
index 0000000000..c1942ae15b
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_array_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_directBuffer_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_directBuffer_tps.png
new file mode 100644
index 0000000000..43af89c9cf
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT_from_array_tps.png b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT_from_array_tps.png
new file mode 100644
index 0000000000..a39ccdd119
Binary files /dev/null and b/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT_from_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png
new file mode 100644
index 0000000000..102aebf71c
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_directBuffer_tps.png
new file mode 100644
index 0000000000..28277c8e3f
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_array_tps.png
new file mode 100644
index 0000000000..391a4cd725
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_directBuffer_tps.png
new file mode 100644
index 0000000000..757164a640
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_array_tps.png
new file mode 100644
index 0000000000..ad5674db5b
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_directBuffer_tps.png
new file mode 100644
index 0000000000..22b132f1cf
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_array_tps.png
new file mode 100644
index 0000000000..7f82cbe882
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_directBuffer_tps.png
new file mode 100644
index 0000000000..0dd0146df5
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_compatible_MEDIA_CONTENT_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_compatible_MEDIA_CONTENT_to_directBuffer_tps.png
new file mode 100644
index 0000000000..3b39c7e47c
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_compatible_MEDIA_CONTENT_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_array_tps.png
new file mode 100644
index 0000000000..552a5d256f
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_directBuffer_tps.png
new file mode 100644
index 0000000000..bd6f43327c
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_array_tps.png
new file mode 100644
index 0000000000..16b215fc5b
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_array_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_directBuffer_tps.png b/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_directBuffer_tps.png
new file mode 100644
index 0000000000..be8f5ce5b1
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT_to_array_tps.png b/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT_to_array_tps.png
new file mode 100644
index 0000000000..ad1110382f
Binary files /dev/null and b/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT_to_array_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_array_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_array_tps.png
new file mode 100644
index 0000000000..9ec2e6c0cc
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_array_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_directBuffer_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_directBuffer_tps.png
new file mode 100644
index 0000000000..76102feedd
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_array_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_array_tps.png
new file mode 100644
index 0000000000..3890e11d4a
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_array_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_directBuffer_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_directBuffer_tps.png
new file mode 100644
index 0000000000..adc23e38b1
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_array_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_array_tps.png
new file mode 100644
index 0000000000..55834422a6
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_array_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_directBuffer_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_directBuffer_tps.png
new file mode 100644
index 0000000000..7a274ac50a
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_array_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_array_tps.png
new file mode 100644
index 0000000000..8be24baecc
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_array_tps.png differ
diff --git a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png
new file mode 100644
index 0000000000..88ff863520
Binary files /dev/null and b/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png differ
diff --git a/docs/benchmarks/rust/README.md b/docs/benchmarks/rust/README.md
new file mode 100644
index 0000000000..9ea07ebd9f
--- /dev/null
+++ b/docs/benchmarks/rust/README.md
@@ -0,0 +1,118 @@
+## Performance Comparison Report
+
+_Generated on 2025-10-26 18:36:41_
+
+How to generate performance report:
+
+```bash
+cd benchmarks/rust_benchmark
+cargo bench 2>&1 | tee cargo_bench.log
+python benchmark_report.py --log-file cargo_bench.log --output-dir=report_output
+```
+
+### Hardware & OS Info
+
+| Key                  | Value         |
+| -------------------- | ------------- |
+| OS                   | Darwin 24.5.0 |
+| Machine              | arm64         |
+| Processor            | arm           |
+| CPU Cores (Physical) | 12            |
+| CPU Cores (Logical)  | 12            |
+| Total RAM (GB)       | 48.0          |
+
+### Benchmark Plots
+
+**company**
+
+<p align="center">
+<img src="company.png" width="90%">
+</p>
+
+**ecommerce_data**
+
+<p align="center">
+<img src="ecommerce_data.png" width="90%">
+</p>
+
+**person**
+
+<p align="center">
+<img src="person.png" width="90%">
+</p>
+
+**simple_list**
+
+<p align="center">
+<img src="simple_list.png" width="90%">
+</p>
+
+**simple_map**
+
+<p align="center">
+<img src="simple_map.png" width="90%">
+</p>
+
+**simple_struct**
+
+<p align="center">
+<img src="simple_struct.png" width="90%">
+</p>
+
+**system_data**
+
+<p align="center">
+<img src="system_data.png" width="90%">
+</p>
+
+### Serialize Results
+
+| Datatype       | Size   | Operation | Fory TPS   | JSON TPS   | Protobuf TPS | Fastest |
+| -------------- | ------ | --------- | ---------- | ---------- | ------------ | ------- |
+| company        | small  | serialize | 10,063,906 | 761,673    | 896,620      | fory    |
+| company        | medium | serialize | 412,507    | 33,835     | 37,590       | fory    |
+| company        | large  | serialize | 9,183      | 793        | 880          | fory    |
+| ecommerce_data | small  | serialize | 2,350,729  | 206,262    | 256,970      | fory    |
+| ecommerce_data | medium | serialize | 59,977     | 4,699      | 5,242        | fory    |
+| ecommerce_data | large  | serialize | 3,727      | 266        | 295          | fory    |
+| person         | small  | serialize | 13,632,522 | 1,345,189  | 1,475,035    | fory    |
+| person         | medium | serialize | 3,839,656  | 337,610    | 369,031      | fory    |
+| person         | large  | serialize | 907,853    | 79,631     | 91,408       | fory    |
+| simple_list    | small  | serialize | 27,726,945 | 4,874,957  | 4,643,172    | fory    |
+| simple_list    | medium | serialize | 4,770,765  | 401,558    | 397,551      | fory    |
+| simple_list    | large  | serialize | 606,061    | 41,061     | 44,565       | fory    |
+| simple_map     | small  | serialize | 22,862,369 | 3,888,025  | 2,695,999    | fory    |
+| simple_map     | medium | serialize | 2,128,973  | 204,319    | 193,132      | fory    |
+| simple_map     | large  | serialize | 177,847    | 18,419     | 18,668       | fory    |
+| simple_struct  | small  | serialize | 35,729,598 | 10,167,045 | 8,633,342    | fory    |
+| simple_struct  | medium | serialize | 34,988,279 | 9,737,098  | 6,433,350    | fory    |
+| simple_struct  | large  | serialize | 31,801,558 | 4,545,041  | 7,420,049    | fory    |
+| system_data    | small  | serialize | 5,382,131  | 468,033    | 569,930      | fory    |
+| system_data    | medium | serialize | 174,240    | 11,896     | 14,753       | fory    |
+| system_data    | large  | serialize | 10,671     | 876        | 1,040        | fory    |
+
+### Deserialize Results
+
+| Datatype       | Size   | Operation   | Fory TPS   | JSON TPS   | Protobuf TPS | Fastest |
+| -------------- | ------ | ----------- | ---------- | ---------- | ------------ | ------- |
+| company        | small  | deserialize | 1,145,593  | 718,597    | 917,431      | fory    |
+| company        | medium | deserialize | 35,195     | 24,474     | 25,057       | fory    |
+| company        | large  | deserialize | 836        | 623        | 623          | fory    |
+| ecommerce_data | small  | deserialize | 278,427    | 183,237    | 241,109      | fory    |
+| ecommerce_data | medium | deserialize | 5,622      | 3,820      | 4,249        | fory    |
+| ecommerce_data | large  | deserialize | 298        | 204        | 217          | fory    |
+| person         | small  | deserialize | 1,924,372  | 1,214,388  | 1,675,631    | fory    |
+| person         | medium | deserialize | 371,016    | 265,280    | 266,333      | fory    |
+| person         | large  | deserialize | 84,839     | 63,975     | 61,820       | fory    |
+| simple_list    | small  | deserialize | 6,129,329  | 3,599,582  | 4,429,286    | fory    |
+| simple_list    | medium | deserialize | 460,745    | 305,409    | 337,336      | fory    |
+| simple_list    | large  | deserialize | 54,348     | 33,962     | 38,776       | fory    |
+| simple_map     | small  | deserialize | 3,686,364  | 3,090,426  | 3,477,051    | fory    |
+| simple_map     | medium | deserialize | 171,774    | 126,638    | 119,323      | fory    |
+| simple_map     | large  | deserialize | 16,501     | 10,920     | 10,853       | fory    |
+| simple_struct  | small  | deserialize | 31,476,235 | 12,948,168 | 28,280,543   | fory    |
+| simple_struct  | medium | deserialize | 30,077,902 | 10,431,118 | 23,012,841   | fory    |
+| simple_struct  | large  | deserialize | 28,201,585 | 8,955,759  | 23,528,858   | fory    |
+| system_data    | small  | deserialize | 644,870    | 421,106    | 549,209      | fory    |
+| system_data    | medium | deserialize | 14,322     | 9,205      | 10,565       | fory    |
+| system_data    | large  | deserialize | 961        | 634        | 706          | fory    |
diff --git a/docs/benchmarks/rust/company.png b/docs/benchmarks/rust/company.png
new file mode 100644
index 0000000000..eee9de23fc
Binary files /dev/null and b/docs/benchmarks/rust/company.png differ
diff --git a/docs/benchmarks/rust/ecommerce_data.png b/docs/benchmarks/rust/ecommerce_data.png
new file mode 100644
index 0000000000..11a5073295
Binary files /dev/null and b/docs/benchmarks/rust/ecommerce_data.png differ
diff --git a/docs/benchmarks/rust/person.png b/docs/benchmarks/rust/person.png
new file mode 100644
index 0000000000..d31e0d0309
Binary files /dev/null and b/docs/benchmarks/rust/person.png differ
diff --git a/docs/benchmarks/rust/simple_list.png b/docs/benchmarks/rust/simple_list.png
new file mode 100644
index 0000000000..00c5b7d4e6
Binary files /dev/null and b/docs/benchmarks/rust/simple_list.png differ
diff --git a/docs/benchmarks/rust/simple_map.png b/docs/benchmarks/rust/simple_map.png
new file mode 100644
index 0000000000..1142bb3fb3
Binary files /dev/null and b/docs/benchmarks/rust/simple_map.png differ
diff --git a/docs/benchmarks/rust/simple_struct.png b/docs/benchmarks/rust/simple_struct.png
new file mode 100644
index 0000000000..973fa35e8d
Binary files /dev/null and b/docs/benchmarks/rust/simple_struct.png differ
diff --git a/docs/benchmarks/rust/system_data.png b/docs/benchmarks/rust/system_data.png
new file mode 100644
index 0000000000..330aa6b52e
Binary files /dev/null and b/docs/benchmarks/rust/system_data.png differ


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@fory.apache.org
For additional commands, e-mail: commits-help@fory.apache.org