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.git


The following commit(s) were added to refs/heads/main by this push:
     new 16a923085 docs(java): fix benchmark images (#3304)
16a923085 is described below

commit 16a923085a33c36ce11f54fc0036dc370886932b
Author: Shawn Yang <[email protected]>
AuthorDate: Fri Feb 6 19:31:07 2026 +0800

    docs(java): fix benchmark images (#3304)
    
    ## Why?
    
    Java benchmark docs currently depend on many per-case images and
    manually maintained tables, which makes them hard to scan and easy to
    drift from generated benchmark data.
    
    
    ## What does this PR do?
    
    - Refactors `benchmarks/java_benchmark/analyze.py` to centralize
    benchmark metadata and generate combined benchmark charts.
    - Adds automatic update logic for `docs/benchmarks/java/README.md`
    benchmark tables (pivoted by libraries with stable ordering and
    formatting).
    - Replaces root `README.md` Java throughput image groups with two
    consolidated repository-level charts.
    - Regenerates Java benchmark artifacts by replacing many single-case
    PNGs with combined images (`java_heap_*`, `java_offheap_*`,
    `java_zero_copy_*`, and repo summary charts).
    - Normalizes benchmark image embedding style in
    `docs/benchmarks/cpp/README.md` and `docs/benchmarks/rust/README.md`
    from HTML tags to Markdown image syntax.
    
    
    ## Related issues
    
    N/A
    
    
    ## Does this PR introduce any user-facing change?
    
    Benchmark documentation and generated benchmark charts are updated.
    
    
    - [ ] Does this PR introduce any public API change?
    - [ ] Does this PR introduce any binary protocol compatibility change?
    
    ## Benchmark
    
    See updated charts under `docs/benchmarks/java/` and the benchmark
    tables in `docs/benchmarks/java/README.md`.
---
 README.md                                          |  10 +-
 benchmarks/java_benchmark/analyze.py               | 593 +++++++++++++++------
 docs/benchmarks/cpp/README.md                      |   4 +-
 docs/benchmarks/java/README.md                     | 542 ++++---------------
 ...ize_compatible_MEDIA_CONTENT_from_array_tps.png | Bin 31840 -> 0 bytes
 ...ize_compatible_STRUCT_from_directBuffer_tps.png | Bin 33119 -> 0 bytes
 ...alize_compatible_MEDIA_CONTENT_to_array_tps.png | Bin 34290 -> 0 bytes
 ...alize_compatible_STRUCT_to_directBuffer_tps.png | Bin 34685 -> 0 bytes
 ...ch_deserialize_MEDIA_CONTENT_from_array_tps.png | Bin 33209 -> 0 bytes
 ...rialize_MEDIA_CONTENT_from_directBuffer_tps.png | Bin 34145 -> 0 bytes
 .../bench_deserialize_SAMPLE_from_array_tps.png    | Bin 32523 -> 0 bytes
 ...ch_deserialize_SAMPLE_from_directBuffer_tps.png | Bin 31301 -> 0 bytes
 .../bench_deserialize_STRUCT2_from_array_tps.png   | Bin 30532 -> 0 bytes
 ...h_deserialize_STRUCT2_from_directBuffer_tps.png | Bin 31564 -> 0 bytes
 .../bench_deserialize_STRUCT_from_array_tps.png    | Bin 30493 -> 0 bytes
 ...ch_deserialize_STRUCT_from_directBuffer_tps.png | Bin 31682 -> 0 bytes
 ...patible_MEDIA_CONTENT_from_directBuffer_tps.png | Bin 34063 -> 0 bytes
 ...eserialize_compatible_SAMPLE_from_array_tps.png | Bin 32469 -> 0 bytes
 ...ize_compatible_SAMPLE_from_directBuffer_tps.png | Bin 32277 -> 0 bytes
 ...serialize_compatible_STRUCT2_from_array_tps.png | Bin 32025 -> 0 bytes
 ...ze_compatible_STRUCT2_from_directBuffer_tps.png | Bin 31872 -> 0 bytes
 ...eserialize_compatible_STRUCT_from_array_tps.png | Bin 32178 -> 0 bytes
 .../java/java_heap_deserialize_compatible.png      | Bin 0 -> 99247 bytes
 .../java/java_heap_deserialize_consistent.png      | Bin 0 -> 107832 bytes
 .../java/java_heap_serialize_compatible.png        | Bin 0 -> 108196 bytes
 .../java/java_heap_serialize_consistent.png        | Bin 0 -> 106382 bytes
 .../java/java_offheap_deserialize_compatible.png   | Bin 0 -> 104602 bytes
 .../java/java_offheap_deserialize_consistent.png   | Bin 0 -> 108056 bytes
 .../java/java_offheap_serialize_compatible.png     | Bin 0 -> 119826 bytes
 .../java/java_offheap_serialize_consistent.png     | Bin 0 -> 121717 bytes
 .../java/java_repo_deserialization_throughput.png  | Bin 0 -> 116455 bytes
 .../java/java_repo_serialization_throughput.png    | Bin 0 -> 124190 bytes
 .../benchmarks/java/java_zero_copy_deserialize.png | Bin 0 -> 98312 bytes
 docs/benchmarks/java/java_zero_copy_serialize.png  | Bin 0 -> 98680 bytes
 .../bench_serialize_MEDIA_CONTENT_to_array_tps.png | Bin 33109 -> 0 bytes
 ...serialize_MEDIA_CONTENT_to_directBuffer_tps.png | Bin 33266 -> 0 bytes
 .../bench_serialize_SAMPLE_to_array_tps.png        | Bin 32126 -> 0 bytes
 .../bench_serialize_SAMPLE_to_directBuffer_tps.png | Bin 33863 -> 0 bytes
 .../bench_serialize_STRUCT2_to_array_tps.png       | Bin 31979 -> 0 bytes
 ...bench_serialize_STRUCT2_to_directBuffer_tps.png | Bin 31389 -> 0 bytes
 .../bench_serialize_STRUCT_to_array_tps.png        | Bin 32803 -> 0 bytes
 .../bench_serialize_STRUCT_to_directBuffer_tps.png | Bin 32062 -> 0 bytes
 ...ompatible_MEDIA_CONTENT_to_directBuffer_tps.png | Bin 33412 -> 0 bytes
 ...ch_serialize_compatible_SAMPLE_to_array_tps.png | Bin 32443 -> 0 bytes
 ...alize_compatible_SAMPLE_to_directBuffer_tps.png | Bin 34231 -> 0 bytes
 ...h_serialize_compatible_STRUCT2_to_array_tps.png | Bin 33595 -> 0 bytes
 ...lize_compatible_STRUCT2_to_directBuffer_tps.png | Bin 32728 -> 0 bytes
 ...ch_serialize_compatible_STRUCT_to_array_tps.png | Bin 32510 -> 0 bytes
 ...opy_bench_deserialize_BUFFER_from_array_tps.png | Bin 26864 -> 0 bytes
 ...ch_deserialize_BUFFER_from_directBuffer_tps.png | Bin 28380 -> 0 bytes
 ..._deserialize_PRIMITIVE_ARRAY_from_array_tps.png | Bin 26675 -> 0 bytes
 ...alize_PRIMITIVE_ARRAY_from_directBuffer_tps.png | Bin 27982 -> 0 bytes
 ...ro_copy_bench_serialize_BUFFER_to_array_tps.png | Bin 25816 -> 0 bytes
 ..._bench_serialize_BUFFER_to_directBuffer_tps.png | Bin 27249 -> 0 bytes
 ...ench_serialize_PRIMITIVE_ARRAY_to_array_tps.png | Bin 26219 -> 0 bytes
 ...rialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png | Bin 30094 -> 0 bytes
 docs/benchmarks/rust/README.md                     |  28 +-
 57 files changed, 531 insertions(+), 646 deletions(-)

diff --git a/README.md b/README.md
index ba7b6ccd9..aa6d29157 100644
--- a/README.md
+++ b/README.md
@@ -86,19 +86,13 @@ The following benchmarks compare Fory against popular Java 
serialization framewo
 **Serialization Throughput**:
 
 <p align="center">
-<img width="24%" alt="Struct Serialization Compatible" 
src="docs/benchmarks/java/compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png">
-<img width="24%" alt="MediaContent Serialization Compatible" 
src="docs/benchmarks/java/compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png">
-<img width="24%" alt="MediaContent Serialization" 
src="docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png">
-<img width="24%" alt="Sample Serialization" 
src="docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_array_tps.png">
+<img src="docs/benchmarks/java/java_repo_serialization_throughput.png" 
width="95%" alt="Java Serialization Throughput">
 </p>
 
 **Deserialization Throughput**:
 
 <p align="center">
-<img width="24%" alt="Struct Deserialization Compatible" 
src="docs/benchmarks/java/compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png">
-<img width="24%" alt="MediaContent Deserialization Compatible" 
src="docs/benchmarks/java/compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png">
-<img width="24%" alt="MediaContent Deserialization" 
src="docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png">
-<img width="24%" alt="Sample Deserialization" 
src="docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_array_tps.png">
+<img src="docs/benchmarks/java/java_repo_deserialization_throughput.png" 
width="95%" alt="Java Deserialization Throughput">
 </p>
 
 **Important**: Fory's runtime code generation requires proper warm-up for 
performance measurement:
diff --git a/benchmarks/java_benchmark/analyze.py 
b/benchmarks/java_benchmark/analyze.py
index f030cf5c6..86f095b27 100644
--- a/benchmarks/java_benchmark/analyze.py
+++ b/benchmarks/java_benchmark/analyze.py
@@ -19,31 +19,159 @@
 process fory/kryo/fst/hession performance data
 """
 
-import datetime
 import matplotlib.pyplot as plt
 import os
 import pandas as pd
 from pathlib import Path
 import re
-import sys
 
 dir_path = os.path.dirname(os.path.realpath(__file__))
-
-
-def to_markdown(df: pd.DataFrame, filepath: str):
-    columns = df.columns.tolist()
-    for col in list(columns):
-        if len(df[col].value_counts()) == 1:
-            columns.remove(col)
-    if "Lib" in columns:
-        columns.remove("Lib")
-        columns.insert(0, "Lib")
-    if "Tps" in columns:
-        columns.remove("Tps")
-        columns.append("Tps")
-    df = df[columns]
-    with open(filepath, "w") as f:
-        f.write(_to_markdown(df))
+repo_root = Path(dir_path).parent.parent
+java_benchmark_dir = repo_root / "docs/benchmarks/java"
+java_benchmark_data_dir = java_benchmark_dir / "data"
+java_benchmark_readme = java_benchmark_dir / "README.md"
+
+lib_order = [
+    "Fory",
+    "ForyMetaShared",
+    "Kryo",
+    "Fst",
+    "Hession",
+    "Jdk",
+    "Protostuff",
+]
+
+java_serialization_files = [
+    "jmh-jdk-11-serialization.csv",
+    "jmh-jdk-11-deserialization.csv",
+]
+java_zero_copy_file = "jmh-jdk-11-zerocopy.csv"
+
+java_plot_combined_groups = [
+    {
+        "alt": "Java Heap Schema Consistent Serialization",
+        "combined": "java_heap_serialize_consistent.png",
+        "sources": [
+            "serialization/bench_serialize_STRUCT_to_array_tps.png",
+            "serialization/bench_serialize_STRUCT2_to_array_tps.png",
+            "serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png",
+            "serialization/bench_serialize_SAMPLE_to_array_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Heap Schema Compatible Serialization",
+        "combined": "java_heap_serialize_compatible.png",
+        "sources": [
+            "serialization/bench_serialize_compatible_STRUCT_to_array_tps.png",
+            
"serialization/bench_serialize_compatible_STRUCT2_to_array_tps.png",
+            
"compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png",
+            "serialization/bench_serialize_compatible_SAMPLE_to_array_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Heap Schema Consistent Deserialization",
+        "combined": "java_heap_deserialize_consistent.png",
+        "sources": [
+            "deserialization/bench_deserialize_STRUCT_from_array_tps.png",
+            "deserialization/bench_deserialize_STRUCT2_from_array_tps.png",
+            
"deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png",
+            "deserialization/bench_deserialize_SAMPLE_from_array_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Heap Schema Compatible Deserialization",
+        "combined": "java_heap_deserialize_compatible.png",
+        "sources": [
+            
"deserialization/bench_deserialize_compatible_STRUCT_from_array_tps.png",
+            
"deserialization/bench_deserialize_compatible_STRUCT2_from_array_tps.png",
+            
"compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png",
+            
"deserialization/bench_deserialize_compatible_SAMPLE_from_array_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Off Heap Schema Consistent Serialization",
+        "combined": "java_offheap_serialize_consistent.png",
+        "sources": [
+            "serialization/bench_serialize_STRUCT_to_directBuffer_tps.png",
+            "serialization/bench_serialize_STRUCT2_to_directBuffer_tps.png",
+            
"serialization/bench_serialize_MEDIA_CONTENT_to_directBuffer_tps.png",
+            
"serialization/bench_serialize_compatible_SAMPLE_to_directBuffer_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Off Heap Schema Compatible Serialization",
+        "combined": "java_offheap_serialize_compatible.png",
+        "sources": [
+            
"compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png",
+            
"serialization/bench_serialize_compatible_STRUCT2_to_directBuffer_tps.png",
+            
"serialization/bench_serialize_compatible_MEDIA_CONTENT_to_directBuffer_tps.png",
+            "serialization/bench_serialize_SAMPLE_to_directBuffer_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Off Heap Schema Consistent Deserialization",
+        "combined": "java_offheap_deserialize_consistent.png",
+        "sources": [
+            
"deserialization/bench_deserialize_STRUCT_from_directBuffer_tps.png",
+            
"deserialization/bench_deserialize_STRUCT2_from_directBuffer_tps.png",
+            
"deserialization/bench_deserialize_MEDIA_CONTENT_from_directBuffer_tps.png",
+            
"deserialization/bench_deserialize_SAMPLE_from_directBuffer_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Off Heap Schema Compatible Deserialization",
+        "combined": "java_offheap_deserialize_compatible.png",
+        "sources": [
+            
"compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png",
+            
"deserialization/bench_deserialize_compatible_STRUCT2_from_directBuffer_tps.png",
+            
"deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_directBuffer_tps.png",
+            
"deserialization/bench_deserialize_compatible_SAMPLE_from_directBuffer_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Zero Copy Serialization",
+        "combined": "java_zero_copy_serialize.png",
+        "sources": [
+            "zerocopy/zero_copy_bench_serialize_BUFFER_to_array_tps.png",
+            
"zerocopy/zero_copy_bench_serialize_BUFFER_to_directBuffer_tps.png",
+            
"zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_array_tps.png",
+            
"zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Zero Copy Deserialization",
+        "combined": "java_zero_copy_deserialize.png",
+        "sources": [
+            "zerocopy/zero_copy_bench_deserialize_BUFFER_from_array_tps.png",
+            
"zerocopy/zero_copy_bench_deserialize_BUFFER_from_directBuffer_tps.png",
+            
"zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_array_tps.png",
+            
"zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_directBuffer_tps.png",
+        ],
+    },
+]
+
+repo_plot_combined_groups = [
+    {
+        "alt": "Java Serialization Throughput",
+        "combined": 
"docs/benchmarks/java/java_repo_serialization_throughput.png",
+        "sources": [
+            
"docs/benchmarks/java/compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png",
+            
"docs/benchmarks/java/compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png",
+            
"docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png",
+            
"docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_array_tps.png",
+        ],
+    },
+    {
+        "alt": "Java Deserialization Throughput",
+        "combined": 
"docs/benchmarks/java/java_repo_deserialization_throughput.png",
+        "sources": [
+            
"docs/benchmarks/java/compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png",
+            
"docs/benchmarks/java/compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png",
+            
"docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png",
+            
"docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_array_tps.png",
+        ],
+    },
+]
 
 
 def _to_markdown(df: pd.DataFrame):
@@ -57,6 +185,245 @@ def _to_markdown(df: pd.DataFrame):
     return md_table
 
 
+def _format_tps(value):
+    if pd.isna(value):
+        return ""
+    return f"{float(value):.6f}"
+
+
+def _pivot_lib_columns(df: pd.DataFrame, index_columns):
+    table_df = (
+        df.pivot_table(
+            index=index_columns,
+            columns="Lib",
+            values="Tps",
+            aggfunc="first",
+            sort=False,
+        )
+        .reset_index()
+        .copy()
+    )
+    available_libs = table_df.columns.tolist()
+    sorted_lib_columns = [name for name in lib_order if name in available_libs]
+    extra_lib_columns = sorted(
+        [
+            name
+            for name in available_libs
+            if name not in index_columns + sorted_lib_columns
+        ]
+    )
+    table_df = table_df[index_columns + sorted_lib_columns + extra_lib_columns]
+    if "references" in table_df.columns:
+        table_df["references"] = 
table_df["references"].astype(str).str.capitalize()
+    for column in sorted_lib_columns + extra_lib_columns:
+        table_df[column] = table_df[column].map(_format_tps)
+    return table_df
+
+
+def _replace_table_section(content: str, heading: str, table_markdown: str):
+    lines = content.splitlines()
+    start_index = None
+    for index, line in enumerate(lines):
+        if line.strip() == heading:
+            start_index = index
+            break
+    if start_index is None:
+        raise ValueError(f"Failed to find section {heading}")
+    end_index = len(lines)
+    for index in range(start_index + 1, len(lines)):
+        if lines[index].startswith("### "):
+            end_index = index
+            break
+    updated_lines = lines[: start_index + 1] + ["", table_markdown, ""]
+    if end_index < len(lines):
+        updated_lines.extend(lines[end_index:])
+    return "\n".join(updated_lines).rstrip() + "\n"
+
+
+def _parse_chart_spec(source_path: str):
+    name = Path(source_path).name
+    benchmark_match = re.match(
+        
r"bench_(serialize(?:_compatible)?|deserialize(?:_compatible)?)_([A-Z0-9_]+)_(to|from)_(array|directBuffer)_tps\.png",
+        name,
+    )
+    if benchmark_match is not None:
+        return {
+            "kind": "benchmark",
+            "benchmark": benchmark_match.group(1),
+            "objectType": benchmark_match.group(2),
+            "bufferType": benchmark_match.group(4),
+        }
+    zero_copy_match = re.match(
+        
r"zero_copy_bench_(serialize|deserialize)_([A-Z_]+)_(to|from)_(array|directBuffer)_tps\.png",
+        name,
+    )
+    if zero_copy_match is not None:
+        return {
+            "kind": "zero_copy",
+            "benchmark": zero_copy_match.group(1),
+            "dataType": zero_copy_match.group(2),
+            "bufferType": zero_copy_match.group(4),
+        }
+    raise ValueError(f"Unsupported chart source path: {source_path}")
+
+
+def _prepare_benchmark_plot_data(bench_df: pd.DataFrame):
+    data = bench_df.fillna("").copy()
+    compatible = data[data["Benchmark"].str.contains("compatible")]
+    if len(compatible) > 0:
+        jdk = data[data["Lib"].str.contains("Jdk")].copy()
+        jdk["Benchmark"] = jdk["Benchmark"] + "_compatible"
+        data = pd.concat([data, jdk], ignore_index=True)
+    data["Tps"] = (data["Tps"] / scaler).apply(format_scaler)
+    return data
+
+
+def _prepare_zero_copy_plot_data(zero_copy_df: pd.DataFrame):
+    data = zero_copy_df.fillna("").copy()
+    data["Tps"] = (data["Tps"] / scaler).apply(format_scaler)
+    return data
+
+
+def _build_single_plot_frame(spec, benchmark_data, zero_copy_data):
+    if spec["kind"] == "benchmark":
+        sub_df = benchmark_data[
+            (benchmark_data["Benchmark"] == spec["benchmark"])
+            & (benchmark_data["objectType"] == spec["objectType"])
+            & (benchmark_data["bufferType"] == spec["bufferType"])
+        ][["Lib", "references", "Tps"]]
+        final_df = (
+            sub_df.reset_index(drop=True)
+            .set_index(["Lib", "references"])
+            .unstack("Lib")
+        )
+        if spec["benchmark"].startswith("serialize"):
+            title = f"{spec['benchmark']} {spec['objectType']} to 
{spec['bufferType']} (Tps)"
+        else:
+            title = f"{spec['benchmark']} {spec['objectType']} from 
{spec['bufferType']} (Tps)"
+        xlabel = "enable_references"
+        width = 0.7 * bar_width_scale
+    else:
+        sub_df = zero_copy_data[
+            (zero_copy_data["Benchmark"] == spec["benchmark"])
+            & (zero_copy_data["dataType"] == spec["dataType"])
+            & (zero_copy_data["bufferType"] == spec["bufferType"])
+        ][["Lib", "array_size", "Tps"]]
+        final_df = (
+            sub_df.reset_index(drop=True)
+            .set_index(["Lib", "array_size"])
+            .unstack("Lib")
+        )
+        if spec["benchmark"].startswith("serialize"):
+            title = (
+                f"{spec['benchmark']} {spec['dataType']} to 
{spec['bufferType']} (Tps)"
+            )
+        else:
+            title = f"{spec['benchmark']} {spec['dataType']} from 
{spec['bufferType']} (Tps)"
+        xlabel = "array_size"
+        width = 0.8 * bar_width_scale
+    return final_df, title, xlabel, width
+
+
+def _plot_combined_group(group, benchmark_data, zero_copy_data, output_path: 
Path):
+    fig, axes = plt.subplots(1, 4, figsize=(22, 6), gridspec_kw={"wspace": 
0.15})
+    for axis_index, source_path in enumerate(group["sources"]):
+        axis = axes[axis_index]
+        spec = _parse_chart_spec(source_path)
+        final_df, title, xlabel, width = _build_single_plot_frame(
+            spec, benchmark_data, zero_copy_data
+        )
+        libs = final_df.columns.to_frame()["Lib"]
+        color = [color_map[lib] for lib in libs]
+        final_df.plot.bar(title=title, color=color, ax=axis, width=width)
+        for container in axis.containers:
+            axis.bar_label(container, fontsize=8)
+        axis.set_xlabel(xlabel)
+        if axis_index == 0:
+            axis.set_ylabel(f"Tps/{scaler}")
+        else:
+            axis.set_ylabel("")
+        add_upper_right_legend(axis, libs)
+    output_path.parent.mkdir(parents=True, exist_ok=True)
+    fig.savefig(
+        output_path, dpi=170, bbox_inches="tight", pad_inches=0.03, 
facecolor="white"
+    )
+    plt.close(fig)
+
+
+def _generate_direct_combined_plots(benchmark_df, zero_copy_df, base_dir: 
Path, groups):
+    benchmark_data = _prepare_benchmark_plot_data(benchmark_df)
+    zero_copy_data = _prepare_zero_copy_plot_data(zero_copy_df)
+    for group in groups:
+        output_path = base_dir / group["combined"]
+        _plot_combined_group(group, benchmark_data, zero_copy_data, 
output_path)
+
+
+def _update_java_benchmark_readme(data_dir: Path, readme_path: Path):
+    benchmark_dfs = []
+    for file_name in java_serialization_files:
+        _, bench_df = process_data(str(data_dir / file_name))
+        benchmark_dfs.append(bench_df)
+    benchmark_df = pd.concat(benchmark_dfs, ignore_index=True)
+    benchmark_df = (
+        benchmark_df.assign(
+            _benchmark_order=benchmark_df["Benchmark"].map(
+                {
+                    "serialize": 0,
+                    "serialize_compatible": 1,
+                    "deserialize": 2,
+                    "deserialize_compatible": 3,
+                }
+            ),
+            _buffer_order=benchmark_df["bufferType"].map(
+                {"array": 0, "directBuffer": 1}
+            ),
+            _object_order=benchmark_df["objectType"].map(
+                {"STRUCT": 0, "STRUCT2": 1, "MEDIA_CONTENT": 2, "SAMPLE": 3}
+            ),
+        )
+        .sort_values(
+            ["_benchmark_order", "_object_order", "_buffer_order", 
"references"]
+        )
+        .drop(columns=["_benchmark_order", "_buffer_order", "_object_order"])
+        .reset_index(drop=True)
+    )
+    benchmark_table = _pivot_lib_columns(
+        benchmark_df, ["Benchmark", "objectType", "bufferType", "references"]
+    )
+
+    zero_copy_df, _ = process_data(str(data_dir / java_zero_copy_file))
+    zero_copy_df = (
+        zero_copy_df.assign(
+            _benchmark_order=zero_copy_df["Benchmark"].map(
+                {"serialize": 0, "deserialize": 1}
+            ),
+            _buffer_order=zero_copy_df["bufferType"].map(
+                {"array": 0, "directBuffer": 1}
+            ),
+            _data_type_order=zero_copy_df["dataType"].map(
+                {"BUFFER": 0, "PRIMITIVE_ARRAY": 1}
+            ),
+        )
+        .sort_values(
+            ["_benchmark_order", "array_size", "_buffer_order", 
"_data_type_order"]
+        )
+        .drop(columns=["_benchmark_order", "_buffer_order", 
"_data_type_order"])
+        .reset_index(drop=True)
+    )
+    zero_copy_table = _pivot_lib_columns(
+        zero_copy_df, ["Benchmark", "array_size", "bufferType", "dataType"]
+    )
+
+    readme_content = readme_path.read_text()
+    readme_content = _replace_table_section(
+        readme_content, "### Java Serialization", _to_markdown(benchmark_table)
+    )
+    readme_content = _replace_table_section(
+        readme_content, "### Java Zero-copy", _to_markdown(zero_copy_table)
+    )
+    readme_path.write_text(readme_content)
+
+
 def process_data(filepath: str):
     df = pd.read_csv(filepath)
     columns = list(df.columns.values)
@@ -77,21 +444,24 @@ def process_data(filepath: str):
                 pat="_", n=1, expand=True
             )
             bench_df["Lib"] = bench_df["Lib"].str.capitalize()
+            bench_df["Lib"] = bench_df["Lib"].replace(
+                {"Forymetashared": "ForyMetaShared"}
+            )
             bench_df.drop(["Threads"], axis=1, inplace=True)
         return bench_df
 
-    zero_copy_bench = df[df["Benchmark"].str.contains("ZeroCopy")]
+    zero_copy_bench = df[df["Benchmark"].str.contains("ZeroCopy")].copy()
     zero_copy_bench = process_df(zero_copy_bench)
 
-    bench = df[~df["Benchmark"].str.contains("ZeroCopy")]
+    bench = df[~df["Benchmark"].str.contains("ZeroCopy")].copy()
     bench = process_df(bench)
 
     return zero_copy_bench, bench
 
 
 color_map = {
-    "Fory": "#7845FD",
-    "Forymetashared": "#B237ED",  # (1, 0.65, 0.55)
+    "Fory": "#FF6f01",  # Orange
+    "ForyMetaShared": "#FFB266",  # Shallow orange
     # "Kryo": (1, 0.5, 1),
     # "Kryo": (1, 0.84, 0.25),
     "Kryo": "#55BCC2",
@@ -106,6 +476,7 @@ color_map = {
 
 
 scaler = 10000
+bar_width_scale = 1.2
 
 
 def format_scaler(x):
@@ -115,159 +486,33 @@ def format_scaler(x):
         return round(x, 1)
 
 
-def plot(df: pd.DataFrame, file_dir, filename, column="Tps"):
-    df["ns"] = (1 / df["Tps"] * 10**9).astype(int)
-    data = df.fillna("")
-    data.to_csv(f"{file_dir}/pd_{filename}")
-    if "objectType" in data.columns:
-        group_cols = ["Benchmark", "objectType", "bufferType"]
-    else:
-        group_cols = ["Benchmark", "bufferType"]
-    compatible = data[data["Benchmark"].str.contains("compatible")]
-    plot_color_map = dict(color_map)
-    if len(compatible) > 0:
-        jdk = data[data["Lib"].str.contains("Jdk")].copy()
-        jdk["Benchmark"] = jdk["Benchmark"] + "_compatible"
-        data = pd.concat([data, jdk])
-        fory_metashared_color = plot_color_map["Forymetashared"]
-        fory_color = plot_color_map["Fory"]
-        plot_color_map["Fory"] = fory_metashared_color
-        plot_color_map["Forymetashared"] = fory_color
-    ylabel = column
-    if column == "Tps":
-        ylabel = f"Tps/{scaler}"
-        data[column] = (data[column] / scaler).apply(format_scaler)
-    grouped = data.groupby(group_cols)
-    files_dict = {}
-    count = 0
-    for keys, sub_df in grouped:
-        count = count + 1
-        sub_df = sub_df[["Lib", "references", column]]
-        if keys[0].startswith("serialize"):
-            title = " ".join(keys[:-1]) + " to " + keys[-1]
-        else:
-            title = " ".join(keys[:-1]) + " from " + keys[-1]
-        kind = "Time" if column == "ns" else "Tps"
-        save_filename = f"""{filename}_{title.replace(" ", 
"_")}_{kind.lower()}"""
-        cnt = files_dict.get(save_filename, 0)
-        if cnt > 0:
-            files_dict[save_filename] = cnt = cnt + 1
-            save_filename += "_" + cnt
-        title = f"{title} ({kind})"
-        fig, ax = plt.subplots()
-        final_df = (
-            sub_df.reset_index(drop=True)
-            .set_index(["Lib", "references"])
-            .unstack("Lib")
-        )
-        print(final_df)
-        libs = final_df.columns.to_frame()["Lib"]
-        color = [plot_color_map[lib] for lib in libs]
-        sub_plot = final_df.plot.bar(
-            title=title, color=color, ax=ax, figsize=(7, 7), width=0.7
-        )
-        for container in ax.containers:
-            ax.bar_label(container)
-        ax.set_xlabel("enable_references")
-        ax.set_ylabel(ylabel)
-        libs = libs.str.replace("metashared", "meta\nshared")
-        ax.legend(libs, loc="upper right", prop={"size": 13})
-        save_dir = get_plot_dir(file_dir)
-        sub_plot.get_figure().savefig(save_dir + "/" + save_filename)
-
-
-def plot_zero_copy(df: pd.DataFrame, file_dir, filename, column="Tps"):
-    df["ns"] = (1 / df["Tps"] * 10**9).astype(int)
-    data = df.fillna("")
-    data.to_csv(f"{file_dir}/pd_{filename}")
-    if "dataType" in data.columns:
-        group_cols = ["Benchmark", "dataType", "bufferType"]
-    else:
-        group_cols = ["Benchmark", "bufferType"]
-    ylabel = column
-    if column == "Tps":
-        ylabel = f"Tps/{scaler}"
-        data[column] = (data[column] / scaler).apply(format_scaler)
-    grouped = data.groupby(group_cols)
-    files_dict = {}
-    count = 0
-    for keys, sub_df in grouped:
-        count = count + 1
-        sub_df = sub_df[["Lib", "array_size", column]]
-        if keys[0].startswith("serialize"):
-            title = " ".join(keys[:-1]) + " to " + keys[-1]
-        else:
-            title = " ".join(keys[:-1]) + " from " + keys[-1]
-        kind = "Time" if column == "ns" else "Tps"
-        save_filename = f"""{filename}_{title.replace(" ", 
"_")}_{kind.lower()}"""
-        cnt = files_dict.get(save_filename, 0)
-        if cnt > 0:
-            files_dict[save_filename] = cnt = cnt + 1
-            save_filename += "_" + cnt
-        title = f"{title} ({kind})"
-        fig, ax = plt.subplots()
-        final_df = (
-            sub_df.reset_index(drop=True)
-            .set_index(["Lib", "array_size"])
-            .unstack("Lib")
-        )
-        print(final_df)
-        libs = final_df.columns.to_frame()["Lib"]
-        color = [color_map[lib] for lib in libs]
-        sub_plot = final_df.plot.bar(title=title, color=color, ax=ax, 
figsize=(7, 7))
-        for container in ax.containers:
-            ax.bar_label(container)
-        ax.set_xlabel("array_size")
-        ax.set_ylabel(ylabel)
-        ax.legend(libs, bbox_to_anchor=(0.23, 0.99), prop={"size": 13})
-        save_dir = get_plot_dir(file_dir)
-        sub_plot.get_figure().savefig(save_dir + "/" + save_filename)
-
-
-time_str = datetime.datetime.now().strftime("%m%d_%H%M_%S")
-
-
-def get_plot_dir(_file_dir):
-    plot_dir = _file_dir + "/" + time_str
-    if not os.path.exists(plot_dir):
-        os.makedirs(plot_dir)
-    return plot_dir
-
-
-def camel_to_snake(name):
-    name = re.sub("(.)([A-Z][a-z]+)", r"\1_\2", name)
-    return re.sub("([a-z\\d])([A-Z])", r"\1_\2", name).lower()
-
-
-def get_datasize_markdown(size_log):
-    lines = [line.rsplit("===>", 1)[-1] for line in size_log.split("\n")]
-    lines = [
-        [item.strip() for item in line.split("|")][:-1] for line in lines if 
"|" in line
+def add_upper_right_legend(ax, labels):
+    legend_labels = [
+        str(label).replace("ForyMetaShared", "ForyMeta\nShared") for label in 
labels
     ]
-    columns = "Lib,objectType,references,bufferType,size".split(",")
-    df = pd.DataFrame(lines, columns=columns)
-    df["size"] = df["size"].astype(int)
-    df = df["objectType,references,bufferType,size".split(",") + ["Lib"]]
-    grouped_df = 
df.sort_values("objectType,references,bufferType,size".split(","))
-    grouped_df = 
grouped_df[~grouped_df["bufferType"].str.contains("directBuffer")]
-    grouped_df = grouped_df["objectType,references,Lib,size".split(",")]
-    return _to_markdown(grouped_df)
+    ax.legend(
+        legend_labels,
+        loc="upper right",
+        bbox_to_anchor=(0.98, 0.98),
+        borderaxespad=0.2,
+        prop={"size": 10},
+        frameon=True,
+        framealpha=0.9,
+    )
 
 
 if __name__ == "__main__":
-    # size_markdown = get_datasize_markdown("""
-    # """)
-    # print(size_markdown)
-    args = sys.argv[1:]
-    if args:
-        file_name = args[0]
-    else:
-        file_name = "jmh-jdk-11-deserialization.csv"
-    file_dir = f"{dir_path}/../../docs/benchmarks/data"
-    zero_copy_bench, bench = process_data(os.path.join(file_dir, file_name))
-    if zero_copy_bench.shape[0] > 0:
-        to_markdown(zero_copy_bench, 
str(Path(file_name).with_suffix(".zero_copy.md")))
-        plot_zero_copy(zero_copy_bench, file_dir, "zero_copy_bench", 
column="Tps")
-    if bench.shape[0] > 0:
-        to_markdown(bench, str(Path(file_name).with_suffix(".bench.md")))
-        plot(bench, file_dir, "bench", column="Tps")
+    benchmark_dfs = []
+    for file_name in java_serialization_files:
+        _, bench_df = process_data(str(java_benchmark_data_dir / file_name))
+        benchmark_dfs.append(bench_df)
+    benchmark_df = pd.concat(benchmark_dfs, ignore_index=True)
+    zero_copy_df, _ = process_data(str(java_benchmark_data_dir / 
java_zero_copy_file))
+
+    _update_java_benchmark_readme(java_benchmark_data_dir, 
java_benchmark_readme)
+    _generate_direct_combined_plots(
+        benchmark_df, zero_copy_df, java_benchmark_dir, 
java_plot_combined_groups
+    )
+    _generate_direct_combined_plots(
+        benchmark_df, zero_copy_df, repo_root, repo_plot_combined_groups
+    )
diff --git a/docs/benchmarks/cpp/README.md b/docs/benchmarks/cpp/README.md
index f64a16a71..1721869d8 100644
--- a/docs/benchmarks/cpp/README.md
+++ b/docs/benchmarks/cpp/README.md
@@ -26,9 +26,7 @@ python benchmark_report.py --json-file 
build/benchmark_results.json --output-dir
 
 ## Benchmark Plots
 
-<p align="center">
-<img src="throughput.png" width="90%" />
-</p>
+![Throughput](throughput.png)
 
 ## Benchmark Results
 
diff --git a/docs/benchmarks/java/README.md b/docs/benchmarks/java/README.md
index 7f987dbbb..59702a4c2 100644
--- a/docs/benchmarks/java/README.md
+++ b/docs/benchmarks/java/README.md
@@ -69,48 +69,28 @@ Serialize data java byte array.
 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 Heap Schema Consistent 
Serialization](java_heap_serialize_consistent.png)
 
 #### 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 Heap Schema Compatible 
Serialization](java_heap_serialize_compatible.png)
 
 #### 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 Heap Schema Consistent 
Deserialization](java_heap_deserialize_consistent.png)
 
 #### 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>
+![Java Heap Schema Compatible 
Deserialization](java_heap_deserialize_compatible.png)
 
 ### Off-heap serialization
 
@@ -121,48 +101,28 @@ Serialize data off-heap memory.
 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 Off Heap Schema Consistent 
Serialization](java_offheap_serialize_consistent.png)
 
 #### 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 Off Heap Schema Compatible 
Serialization](java_offheap_serialize_compatible.png)
 
 #### 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 Off Heap Schema Consistent 
Deserialization](java_offheap_deserialize_consistent.png)
 
 #### 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>
+![Java Off Heap Schema Compatible 
Deserialization](java_offheap_deserialize_compatible.png)
 
 ### Zero-copy serialization
 
@@ -172,406 +132,108 @@ But if you serialize data between processes on same 
node and use shared-memory,
 
 #### 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 Serialization](java_zero_copy_serialize.png)
 
 #### 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>
+![Java Zero Copy Deserialization](java_zero_copy_deserialize.png)
 
 ## 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   |
+| Benchmark              | objectType    | bufferType   | references | Fory    
       | ForyMetaShared  | Kryo           | Fst           | Hession       | Jdk 
          | Protostuff    |
+| ---------------------- | ------------- | ------------ | ---------- | 
-------------- | --------------- | -------------- | ------------- | 
------------- | ------------- | ------------- |
+| serialize              | STRUCT        | array        | False      | 
7501415.567260 |                 | 558194.100861  | 882178.995727 | 
258233.998931 | 155908.244240 | 330975.350403 |
+| serialize              | STRUCT        | array        | True       | 
6264439.154428 |                 | 557542.628765  | 757753.756691 | 
260845.209485 | 151258.539369 |               |
+| serialize              | STRUCT        | directBuffer | False      | 
9834223.243204 |                 | 1078046.011115 | 807847.663261 | 
266481.009225 | 154875.908438 | 340262.650047 |
+| serialize              | STRUCT        | directBuffer | True       | 
7551780.823133 |                 | 853350.408656  | 762088.935404 | 
261762.594966 | 156404.686214 |               |
+| serialize              | STRUCT2       | array        | False      | 
3586126.623874 |                 | 325172.969175  | 371762.982661 | 
56056.080075  | 36846.049162  | 322563.440433 |
+| serialize              | STRUCT2       | array        | True       | 
3306474.506382 |                 | 259863.332448  | 380638.700267 | 
60038.879790  | 38183.705811  |               |
+| serialize              | STRUCT2       | directBuffer | False      | 
2643155.135327 |                 | 355688.882786  | 365317.705376 | 
55924.319442  | 37444.967981  | 325093.716261 |
+| serialize              | STRUCT2       | directBuffer | True       | 
2391110.083108 |                 | 338960.426033  | 370851.880711 | 
56674.065604  | 35798.679246  |               |
+| serialize              | MEDIA_CONTENT | array        | False      | 
3031642.924542 |                 | 730792.521676  | 751892.023189 | 
367782.358049 | 137989.198821 | 780618.761219 |
+| serialize              | MEDIA_CONTENT | array        | True       | 
2250384.600246 |                 | 445251.084327  | 583859.907758 | 
329427.470680 | 140260.668888 |               |
+| serialize              | MEDIA_CONTENT | directBuffer | False      | 
2479862.129632 |                 | 608972.517580  | 728001.080250 | 
372477.138150 | 138567.623369 | 805941.345157 |
+| serialize              | MEDIA_CONTENT | directBuffer | True       | 
1938527.588331 |                 | 359875.473951  | 595679.580108 | 
353376.085025 | 140158.673910 |               |
+| serialize              | SAMPLE        | array        | False      | 
3570966.469087 |                 | 1105365.931217 | 915907.574306 | 
220386.502846 | 118374.836631 | 663272.710783 |
+| serialize              | SAMPLE        | array        | True       | 
1767693.835090 |                 | 734215.482291  | 731869.156376 | 
192414.014211 | 119858.140625 |               |
+| serialize              | SAMPLE        | directBuffer | False      | 
3684487.760591 |                 | 1376560.302168 | 902302.261168 | 
220981.308085 | 118273.584257 | 693641.589806 |
+| serialize              | SAMPLE        | directBuffer | True       | 
1826456.709478 |                 | 932887.968348  | 723614.066770 | 
211949.960255 | 108263.040839 |               |
+| serialize_compatible   | STRUCT        | array        | False      | 
3530406.108869 | 9204444.777172  | 145964.199559  |               | 
258650.663523 |               |               |
+| serialize_compatible   | STRUCT        | array        | True       | 
3293059.098127 | 7064625.291374  | 136180.832879  |               | 
263564.913879 |               |               |
+| serialize_compatible   | STRUCT        | directBuffer | False      | 
2653169.568374 | 11650229.648715 | 106695.800225  |               | 
249221.452137 |               |               |
+| serialize_compatible   | STRUCT        | directBuffer | True       | 
2393817.762938 | 8702412.752357  | 106458.212005  |               | 
263623.143601 |               |               |
+| serialize_compatible   | STRUCT2       | array        | False      | 
2773368.997680 | 2575824.143864  | 125807.748004  |               | 
58509.125342  |               |               |
+| serialize_compatible   | STRUCT2       | array        | True       | 
2564174.550276 | 3543082.528217  | 114983.546343  |               | 
55552.977735  |               |               |
+| serialize_compatible   | STRUCT2       | directBuffer | False      | 
1912402.937879 | 2714748.572248  | 92130.672361   |               | 
58908.567439  |               |               |
+| serialize_compatible   | STRUCT2       | directBuffer | True       | 
1848338.968058 | 1866073.031851  | 88989.724768   |               | 
55524.373547  |               |               |
+| serialize_compatible   | MEDIA_CONTENT | array        | False      | 
1679272.036223 | 2992288.235281  | 188911.259146  |               | 
377195.903772 |               |               |
+| serialize_compatible   | MEDIA_CONTENT | array        | True       | 
1406736.538716 | 2058738.716953  | 145782.916427  |               | 
351657.879556 |               |               |
+| serialize_compatible   | MEDIA_CONTENT | directBuffer | False      | 
1710680.937387 | 2291443.556971  | 185363.714829  |               | 
371729.727192 |               |               |
+| serialize_compatible   | MEDIA_CONTENT | directBuffer | True       | 
1149999.473994 | 1804349.244125  | 142836.961878  |               | 
343834.954942 |               |               |
+| serialize_compatible   | SAMPLE        | array        | False      | 
3604596.465625 | 4409055.687063  | 378907.663184  |               | 
234454.975158 |               |               |
+| serialize_compatible   | SAMPLE        | array        | True       | 
1619648.337293 | 1840705.439334  | 320815.567701  |               | 
206174.173039 |               |               |
+| serialize_compatible   | SAMPLE        | directBuffer | False      | 
3484533.218305 | 5043538.364886  | 296102.615094  |               | 
194761.224263 |               |               |
+| serialize_compatible   | SAMPLE        | directBuffer | True       | 
1730822.630648 | 1859289.705838  | 276757.392449  |               | 
212840.483308 |               |               |
+| deserialize            | STRUCT        | array        | False      | 
4595230.434552 |                 | 607750.343557  | 357887.235311 | 
84709.108821  | 29603.066599  | 517381.168594 |
+| deserialize            | STRUCT        | array        | True       | 
4634753.596131 |                 | 552802.227807  | 353480.554035 | 
91050.370224  | 29727.744196  |               |
+| deserialize            | STRUCT        | directBuffer | False      | 
5012002.859236 |                 | 910534.169114  | 352441.597147 | 
91151.633583  | 28717.004518  | 538922.947147 |
+| deserialize            | STRUCT        | directBuffer | True       | 
4864329.316938 |                 | 914404.107564  | 334574.303484 | 
91037.205901  | 29549.998286  |               |
+| deserialize            | STRUCT2       | array        | False      | 
1126298.359550 |                 | 275984.042401  | 280131.091068 | 
69758.767783  | 14888.805111  | 416212.973861 |
+| deserialize            | STRUCT2       | array        | True       | 
1046649.083082 |                 | 222710.554833  | 260649.308016 | 
68616.029248  | 14034.100664  |               |
+| deserialize            | STRUCT2       | directBuffer | False      | 
1117586.457565 |                 | 319247.256793  | 262519.858810 | 
66866.108653  | 14652.043788  | 425523.315814 |
+| deserialize            | STRUCT2       | directBuffer | True       | 
1018277.848128 |                 | 249105.828416  | 234973.637096 | 
65338.345185  | 14425.886048  |               |
+| deserialize            | MEDIA_CONTENT | array        | False      | 
2054066.903469 |                 | 577631.234369  | 363455.785182 | 
118156.072284 | 38536.250402  | 951662.019963 |
+| deserialize            | MEDIA_CONTENT | array        | True       | 
1507767.206603 |                 | 365530.417232  | 304371.728638 | 
120016.594171 | 38957.191090  |               |
+| deserialize            | MEDIA_CONTENT | directBuffer | False      | 
1502746.028159 |                 | 389473.174523  | 311691.658687 | 
111067.942626 | 40512.632076  | 964664.641598 |
+| deserialize            | MEDIA_CONTENT | directBuffer | True       | 
1290593.975753 |                 | 306995.220799  | 251820.171513 | 
121820.821260 | 37030.594632  |               |
+| deserialize            | SAMPLE        | array        | False      | 
2069988.624415 |                 | 979173.981159  | 473409.796491 | 
119471.518388 | 29309.573998  | 619338.385412 |
+| deserialize            | SAMPLE        | array        | True       | 
1797942.442313 |                 | 716438.884369  | 428315.502365 | 
121106.002978 | 27466.003923  |               |
+| deserialize            | SAMPLE        | directBuffer | False      | 
2229791.078395 |                 | 983538.936801  | 441027.550809 | 
117806.916589 | 28128.457935  | 624804.978534 |
+| deserialize            | SAMPLE        | directBuffer | True       | 
1958815.397807 |                 | 762889.302732  | 420523.770904 | 
121940.783597 | 28221.014735  |               |
+| deserialize_compatible | STRUCT        | array        | False      | 
2110335.039275 | 4978833.206806  | 78771.635309   |               | 
88617.486795  |               |               |
+| deserialize_compatible | STRUCT        | array        | True       | 
2135681.982674 | 4807963.882520  | 72805.937649   |               | 
90206.654212  |               |               |
+| deserialize_compatible | STRUCT        | directBuffer | False      | 
1596464.248141 | 5149070.657830  | 58574.904225   |               | 
89580.561575  |               |               |
+| deserialize_compatible | STRUCT        | directBuffer | True       | 
1684681.074242 | 5137500.621288  | 60685.320299   |               | 
84407.472531  |               |               |
+| deserialize_compatible | STRUCT2       | array        | False      | 
849507.176263  | 1201998.142474  | 60602.285743   |               | 
63703.763814  |               |               |
+| deserialize_compatible | STRUCT2       | array        | True       | 
815120.319155  | 1058423.614156  | 62729.908347   |               | 
69521.573119  |               |               |
+| deserialize_compatible | STRUCT2       | directBuffer | False      | 
784036.589363  | 1131212.586953  | 54637.329134   |               | 
69342.030965  |               |               |
+| deserialize_compatible | STRUCT2       | directBuffer | True       | 
782679.662083  | 1089162.408165  | 51761.569591   |               | 
68542.055543  |               |               |
+| deserialize_compatible | MEDIA_CONTENT | array        | False      | 
1441671.706320 | 2279742.810882  | 180882.860363  |               | 
121619.090797 |               |               |
+| deserialize_compatible | MEDIA_CONTENT | array        | True       | 
1121136.039627 | 1623938.202345  | 154311.211540  |               | 
119994.104050 |               |               |
+| deserialize_compatible | MEDIA_CONTENT | directBuffer | False      | 
1256034.732514 | 1718098.363961  | 134485.160300  |               | 
107594.474890 |               |               |
+| deserialize_compatible | MEDIA_CONTENT | directBuffer | True       | 
1054942.751816 | 1333345.536684  | 119311.787329  |               | 
116531.023438 |               |               |
+| deserialize_compatible | SAMPLE        | array        | False      | 
2296046.895861 | 2485564.396196  | 255086.928308  |               | 
121898.105768 |               |               |
+| deserialize_compatible | SAMPLE        | array        | True       | 
1834139.395757 | 2002938.794909  | 238811.995510  |               | 
121297.485903 |               |               |
+| deserialize_compatible | SAMPLE        | directBuffer | False      | 
2308111.633661 | 2289261.533644  | 201993.787890  |               | 
124044.417439 |               |               |
+| deserialize_compatible | SAMPLE        | directBuffer | True       | 
1820490.585648 | 1927548.827586  | 174534.710870  |               | 
120276.449497 |               |               |
 
 ### 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  |
+| Benchmark   | array_size | bufferType   | dataType        | Fory           | 
Kryo           | Fst            |
+| ----------- | ---------- | ------------ | --------------- | -------------- | 
-------------- | -------------- |
+| serialize   | 200        | array        | BUFFER          | 5123572.914045 | 
1985187.977633 | 2400193.220466 |
+| serialize   | 200        | array        | PRIMITIVE_ARRAY | 8297232.942927 | 
147342.606262  | 313986.053417  |
+| serialize   | 200        | directBuffer | BUFFER          | 5400346.890126 | 
1739454.519770 | 2282550.111756 |
+| serialize   | 200        | directBuffer | PRIMITIVE_ARRAY | 8335248.350301 | 
972683.763633  | 294132.218623  |
+| serialize   | 1000       | array        | BUFFER          | 4979590.929127 | 
1616159.671230 | 1805557.477810 |
+| serialize   | 1000       | array        | PRIMITIVE_ARRAY | 8772856.921028 | 
31395.721514   | 67209.107012   |
+| serialize   | 1000       | directBuffer | BUFFER          | 5376191.775007 | 
1377272.568510 | 1644789.427010 |
+| serialize   | 1000       | directBuffer | PRIMITIVE_ARRAY | 8207563.785251 | 
209183.090868  | 66108.014322   |
+| serialize   | 5000       | array        | BUFFER          | 5018916.322770 | 
711287.533377  | 811029.402136  |
+| serialize   | 5000       | array        | PRIMITIVE_ARRAY | 8027439.580226 | 
6248.006967    | 14997.400124   |
+| serialize   | 5000       | directBuffer | BUFFER          | 5330897.682960 | 
707092.956534  | 477148.540850  |
+| serialize   | 5000       | directBuffer | PRIMITIVE_ARRAY | 7695981.988316 | 
43565.678616   | 15000.378818   |
+| deserialize | 200        | array        | BUFFER          | 3302149.383135 | 
1296284.787720 | 657754.887247  |
+| deserialize | 200        | array        | PRIMITIVE_ARRAY | 986136.067809  | 
146675.360652  | 219333.990504  |
+| deserialize | 200        | directBuffer | BUFFER          | 3113115.471758 | 
1004844.498712 | 598421.278941  |
+| deserialize | 200        | directBuffer | PRIMITIVE_ARRAY | 991807.969328  | 
518713.299422  | 179604.045774  |
+| deserialize | 1000       | array        | BUFFER          | 2831942.848999 | 
721266.541130  | 422147.154601  |
+| deserialize | 1000       | array        | PRIMITIVE_ARRAY | 205671.992736  | 
30409.835023   | 53100.903684   |
+| deserialize | 1000       | directBuffer | BUFFER          | 3397690.327371 | 
592972.713203  | 298929.116572  |
+| deserialize | 1000       | directBuffer | PRIMITIVE_ARRAY | 202275.242341  | 
112132.004609  | 38572.001768   |
+| deserialize | 5000       | array        | BUFFER          | 3296658.120035 | 
147251.846111  | 136934.604328  |
+| deserialize | 5000       | array        | PRIMITIVE_ARRAY | 40312.590172   | 
6122.351228    | 10672.872798   |
+| deserialize | 5000       | directBuffer | BUFFER          | 3284441.570594 | 
148614.476829  | 77950.612503   |
+| deserialize | 5000       | directBuffer | PRIMITIVE_ARRAY | 40413.743717   | 
21826.040410   | 8561.694533    |
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
deleted file mode 100644
index 68fef5a92..000000000
Binary files 
a/docs/benchmarks/java/compatible/bench_deserialize_compatible_MEDIA_CONTENT_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 94529bb83..000000000
Binary files 
a/docs/benchmarks/java/compatible/bench_deserialize_compatible_STRUCT_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 87782f2b1..000000000
Binary files 
a/docs/benchmarks/java/compatible/bench_serialize_compatible_MEDIA_CONTENT_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 4093a4a29..000000000
Binary files 
a/docs/benchmarks/java/compatible/bench_serialize_compatible_STRUCT_to_directBuffer_tps.png
 and /dev/null differ
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
deleted file mode 100644
index 70a4e1fdd..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 74817abc1..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_MEDIA_CONTENT_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index dcfe30633..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 045e5c02a..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_SAMPLE_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 444b1aa7e..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index fec642a64..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT2_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 8ec91efc8..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index ac161c9dd..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_STRUCT_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 830642b62..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_MEDIA_CONTENT_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 8e1a429e2..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 380de0a1d..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_SAMPLE_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index c1942ae15..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 43af89c9c..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT2_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index a39ccdd11..000000000
Binary files 
a/docs/benchmarks/java/deserialization/bench_deserialize_compatible_STRUCT_from_array_tps.png
 and /dev/null differ
diff --git a/docs/benchmarks/java/java_heap_deserialize_compatible.png 
b/docs/benchmarks/java/java_heap_deserialize_compatible.png
new file mode 100644
index 000000000..2865473dd
Binary files /dev/null and 
b/docs/benchmarks/java/java_heap_deserialize_compatible.png differ
diff --git a/docs/benchmarks/java/java_heap_deserialize_consistent.png 
b/docs/benchmarks/java/java_heap_deserialize_consistent.png
new file mode 100644
index 000000000..fff332e47
Binary files /dev/null and 
b/docs/benchmarks/java/java_heap_deserialize_consistent.png differ
diff --git a/docs/benchmarks/java/java_heap_serialize_compatible.png 
b/docs/benchmarks/java/java_heap_serialize_compatible.png
new file mode 100644
index 000000000..d9e3db675
Binary files /dev/null and 
b/docs/benchmarks/java/java_heap_serialize_compatible.png differ
diff --git a/docs/benchmarks/java/java_heap_serialize_consistent.png 
b/docs/benchmarks/java/java_heap_serialize_consistent.png
new file mode 100644
index 000000000..065907ddb
Binary files /dev/null and 
b/docs/benchmarks/java/java_heap_serialize_consistent.png differ
diff --git a/docs/benchmarks/java/java_offheap_deserialize_compatible.png 
b/docs/benchmarks/java/java_offheap_deserialize_compatible.png
new file mode 100644
index 000000000..e7258a923
Binary files /dev/null and 
b/docs/benchmarks/java/java_offheap_deserialize_compatible.png differ
diff --git a/docs/benchmarks/java/java_offheap_deserialize_consistent.png 
b/docs/benchmarks/java/java_offheap_deserialize_consistent.png
new file mode 100644
index 000000000..b84e279e3
Binary files /dev/null and 
b/docs/benchmarks/java/java_offheap_deserialize_consistent.png differ
diff --git a/docs/benchmarks/java/java_offheap_serialize_compatible.png 
b/docs/benchmarks/java/java_offheap_serialize_compatible.png
new file mode 100644
index 000000000..3f1f5821c
Binary files /dev/null and 
b/docs/benchmarks/java/java_offheap_serialize_compatible.png differ
diff --git a/docs/benchmarks/java/java_offheap_serialize_consistent.png 
b/docs/benchmarks/java/java_offheap_serialize_consistent.png
new file mode 100644
index 000000000..98d0582af
Binary files /dev/null and 
b/docs/benchmarks/java/java_offheap_serialize_consistent.png differ
diff --git a/docs/benchmarks/java/java_repo_deserialization_throughput.png 
b/docs/benchmarks/java/java_repo_deserialization_throughput.png
new file mode 100644
index 000000000..21bf2b45d
Binary files /dev/null and 
b/docs/benchmarks/java/java_repo_deserialization_throughput.png differ
diff --git a/docs/benchmarks/java/java_repo_serialization_throughput.png 
b/docs/benchmarks/java/java_repo_serialization_throughput.png
new file mode 100644
index 000000000..dfff16eec
Binary files /dev/null and 
b/docs/benchmarks/java/java_repo_serialization_throughput.png differ
diff --git a/docs/benchmarks/java/java_zero_copy_deserialize.png 
b/docs/benchmarks/java/java_zero_copy_deserialize.png
new file mode 100644
index 000000000..03acaa38b
Binary files /dev/null and 
b/docs/benchmarks/java/java_zero_copy_deserialize.png differ
diff --git a/docs/benchmarks/java/java_zero_copy_serialize.png 
b/docs/benchmarks/java/java_zero_copy_serialize.png
new file mode 100644
index 000000000..e1be0893b
Binary files /dev/null and b/docs/benchmarks/java/java_zero_copy_serialize.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
deleted file mode 100644
index 102aebf71..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 28277c8e3..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_MEDIA_CONTENT_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 391a4cd72..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_array_tps.png 
and /dev/null 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
deleted file mode 100644
index 757164a64..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_SAMPLE_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index ad5674db5..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_array_tps.png 
and /dev/null 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
deleted file mode 100644
index 22b132f1c..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_STRUCT2_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 7f82cbe88..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_array_tps.png 
and /dev/null 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
deleted file mode 100644
index 0dd0146df..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_STRUCT_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 3b39c7e47..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_compatible_MEDIA_CONTENT_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 552a5d256..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index bd6f43327..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_compatible_SAMPLE_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 16b215fc5..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index be8f5ce5b..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT2_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index ad1110382..000000000
Binary files 
a/docs/benchmarks/java/serialization/bench_serialize_compatible_STRUCT_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 9ec2e6c0c..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 76102feed..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_BUFFER_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 3890e11d4..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_array_tps.png
 and /dev/null 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
deleted file mode 100644
index adc23e38b..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_deserialize_PRIMITIVE_ARRAY_from_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 55834422a..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 7a274ac50..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_BUFFER_to_directBuffer_tps.png
 and /dev/null 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
deleted file mode 100644
index 8be24baec..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_array_tps.png
 and /dev/null 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
deleted file mode 100644
index 88ff86352..000000000
Binary files 
a/docs/benchmarks/java/zerocopy/zero_copy_bench_serialize_PRIMITIVE_ARRAY_to_directBuffer_tps.png
 and /dev/null differ
diff --git a/docs/benchmarks/rust/README.md b/docs/benchmarks/rust/README.md
index 834516501..60e2e7b3a 100644
--- a/docs/benchmarks/rust/README.md
+++ b/docs/benchmarks/rust/README.md
@@ -25,45 +25,31 @@ python benchmark_report.py --log-file cargo_bench.log 
--output-dir=report_output
 
 **company**
 
-<p align="center">
-<img src="company.png" width="90%" />
-</p>
+![Company](company.png)
 
 **ecommerce_data**
 
-<p align="center">
-<img src="ecommerce_data.png" width="90%" />
-</p>
+![Ecommerce Data](ecommerce_data.png)
 
 **person**
 
-<p align="center">
-<img src="person.png" width="90%" />
-</p>
+![Person](person.png)
 
 **simple_list**
 
-<p align="center">
-<img src="simple_list.png" width="90%" />
-</p>
+![Simple List](simple_list.png)
 
 **simple_map**
 
-<p align="center">
-<img src="simple_map.png" width="90%" />
-</p>
+![Simple Map](simple_map.png)
 
 **simple_struct**
 
-<p align="center">
-<img src="simple_struct.png" width="90%" />
-</p>
+![Simple Struct](simple_struct.png)
 
 **system_data**
 
-<p align="center">
-<img src="system_data.png" width="90%" />
-</p>
+![System Data](system_data.png)
 
 ### Serialize Results
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to