This directory contains two benchmark entrypoints:
benchmark.py + run.sh (new): C++-parity benchmark matrix covering:Struct, Sample, MediaContentStructList, SampleList, MediaContentListserialize, deserializefory, pickle, protobuffory_benchmark.py (legacy): existing CPython microbench script kept intact.cd benchmarks/python ./run.sh
run.sh will:
benchmarks/proto/bench.protobenchmark.pybenchmark_report.pydocs/benchmarks/python# Run only Struct benchmarks for Fory serialize ./run.sh --data struct --serializer fory --operation serialize # Run all data types, deserialize only ./run.sh --operation deserialize # Adjust benchmark loops ./run.sh --warmup 5 --iterations 30 --repeat 8 --number 1500 # Skip docs sync ./run.sh --no-copy-docs
Supported values:
--data: struct,sample,mediacontent,structlist,samplelist,mediacontentlist--serializer: fory,pickle,protobuf--operation: all|serialize|deserializefory_benchmark.py remains unchanged and can still be used directly:
cd benchmarks/python python fory_benchmark.py
For its original options and behavior, refer to python fory_benchmark.py --help.
pyfory must be installed in your current Python environment.protoc is required by run.sh to generate bench_pb2.py.protobuf benchmarks include dataclass <-> protobuf conversion in the timed path.