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
+
+
+
+### Struct
+
+
+
+### Structlist
+
+
+
+### Sample
+
+
+
+### Samplelist
+
+
+
+### Mediacontent
+
+
+
+### Mediacontentlist
+
+
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