MCPcopy Create free account
hub / github.com/apache/fory / micro_benchmark

Function micro_benchmark

benchmarks/python/fory_benchmark.py:517–695  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

515
516
517def micro_benchmark():
518 args = benchmark_args()
519 ref = not args.no_ref
520
521 # Define benchmark data
522 benchmark_data = {
523 "dict": DICT,
524 "large_dict": LARGE_DICT,
525 "dict_group": DICT_GROUP,
526 "tuple": TUPLE,
527 "large_tuple": LARGE_TUPLE,
528 "large_float_tuple": LARGE_FLOAT_TUPLE,
529 "large_boolean_tuple": LARGE_BOOLEAN_TUPLE,
530 "list": LIST,
531 "large_list": LARGE_LIST,
532 "struct": STRUCT_OBJECT,
533 "slots_struct": SLOTS_STRUCT_OBJECT,
534 }
535
536 # Determine which benchmarks to run
537 if args.benchmarks == "all":
538 selected_benchmarks = list(benchmark_data.keys())
539 else:
540 selected_benchmarks = [b.strip() for b in args.benchmarks.split(",")]
541 # Validate benchmark names
542 invalid = [b for b in selected_benchmarks if b not in benchmark_data]
543 if invalid:
544 print(f"Error: Invalid benchmark names: {', '.join(invalid)}")
545 print(f"Available benchmarks: {', '.join(benchmark_data.keys())}")
546 sys.exit(1)
547
548 # Determine which serializers to run
549 available_serializers = {"fory", "pickle", "msgpack"}
550 if args.serializers == "all":
551 selected_serializers = ["fory", "pickle"]
552 if msgpack is not None:
553 selected_serializers.append("msgpack")
554 else:
555 selected_serializers = [s.strip() for s in args.serializers.split(",")]
556 # Validate serializer names
557 invalid = [s for s in selected_serializers if s not in available_serializers]
558 if invalid:
559 print(f"Error: Invalid serializer names: {', '.join(invalid)}")
560 print(f"Available serializers: {', '.join(available_serializers)}")
561 sys.exit(1)
562 if "msgpack" in selected_serializers and msgpack is None:
563 print("Error: msgpack is not installed.")
564 print("Install it with: pip install msgpack")
565 sys.exit(1)
566
567 msgpack_data = {}
568 if "msgpack" in selected_serializers:
569 msgpack_data = {
570 benchmark_name: (
571 data if is_dataclass(data) else make_msgpack_compatible(data)
572 )
573 for benchmark_name, data in benchmark_data.items()
574 }

Callers 1

fory_benchmark.pyFile · 0.85

Calls 12

benchmark_argsFunction · 0.85
make_msgpack_compatibleFunction · 0.85
itemsMethod · 0.80
run_benchmarkFunction · 0.70
format_timeFunction · 0.70
listFunction · 0.50
keysMethod · 0.45
appendMethod · 0.45
capitalizeMethod · 0.45

Tested by

no test coverage detected