()
| 515 | |
| 516 | |
| 517 | def 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 | } |
no test coverage detected