()
| 959 | |
| 960 | |
| 961 | def main() -> int: |
| 962 | args = parse_args() |
| 963 | |
| 964 | proto_dir = Path(args.proto_dir) |
| 965 | bench_pb2 = load_bench_pb2(proto_dir) |
| 966 | |
| 967 | selected_datatypes = parse_csv_list(args.data, DATA_TYPE_ORDER, DATA_TYPE_ORDER) |
| 968 | selected_serializers = parse_csv_list( |
| 969 | args.serializer, SERIALIZER_ORDER, SERIALIZER_ORDER |
| 970 | ) |
| 971 | validate_schema_mismatch_selection(selected_serializers) |
| 972 | selected_operations = ( |
| 973 | OPERATION_ORDER if args.operation == "all" else [args.operation] |
| 974 | ) |
| 975 | |
| 976 | benchmark_data = create_benchmark_data() |
| 977 | mismatch = schema_mismatch_enabled() |
| 978 | fory_writer = build_fory_v1() |
| 979 | fory_reader = build_fory_v2() if mismatch else build_fory_v1() |
| 980 | if mismatch: |
| 981 | verify_fory_schema_mismatch( |
| 982 | benchmark_data, |
| 983 | selected_datatypes, |
| 984 | writer=fory_writer, |
| 985 | reader=fory_reader, |
| 986 | ) |
| 987 | |
| 988 | print( |
| 989 | f"Benchmarking {len(selected_datatypes)} data type(s), {len(selected_serializers)} serializer(s), {len(selected_operations)} operation(s)" |
| 990 | ) |
| 991 | print( |
| 992 | f"Warmup={args.warmup}, Iterations={args.iterations}, Repeat={args.repeat}, Number={args.number}" |
| 993 | ) |
| 994 | print("=" * 96) |
| 995 | |
| 996 | results = [] |
| 997 | |
| 998 | for datatype in selected_datatypes: |
| 999 | obj = benchmark_data[datatype] |
| 1000 | call_number = benchmark_number(args.number, datatype) |
| 1001 | for operation in selected_operations: |
| 1002 | for serializer in selected_serializers: |
| 1003 | case_name = benchmark_name(serializer, datatype, operation) |
| 1004 | print(f"Running {case_name} ...", end=" ", flush=True) |
| 1005 | |
| 1006 | func, func_args = build_case( |
| 1007 | serializer, |
| 1008 | operation, |
| 1009 | datatype, |
| 1010 | obj, |
| 1011 | fory_writer=fory_writer, |
| 1012 | fory_reader=fory_reader, |
| 1013 | bench_pb2=bench_pb2, |
| 1014 | ) |
| 1015 | mean, stdev = run_benchmark( |
| 1016 | func, |
| 1017 | func_args, |
| 1018 | warmup=args.warmup, |
no test coverage detected