Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
useless_applicator_schemas.py107 linesDownload Raw Back to benchmarks
1 2"""3A benchmark for validation of applicators containing lots of useless schemas.4 5Signals a small possible optimization to remove all such schemas ahead of time.6"""7 8from pyperf import Runner9 10from jsonschema import Draft202012Validator as Validator11 12NUM_USELESS = 10000013 14subschema = {"const": 37}15 16valid = 3717invalid = 1218 19baseline = Validator(subschema)20 21 22# These should be indistinguishable from just `subschema`23by_name = {24    "single subschema": {25        "anyOf": Validator({"anyOf": [subschema]}),26        "allOf": Validator({"allOf": [subschema]}),27        "oneOf": Validator({"oneOf": [subschema]}),28    },29    "redundant subschemas": {30        "anyOf": Validator({"anyOf": [subschema] * NUM_USELESS}),31        "allOf": Validator({"allOf": [subschema] * NUM_USELESS}),32    },33    "useless successful subschemas (beginning)": {34        "anyOf": Validator({"anyOf": [subschema, *[True] * NUM_USELESS]}),35        "allOf": Validator({"allOf": [subschema, *[True] * NUM_USELESS]}),36    },37    "useless successful subschemas (middle)": {38        "anyOf": Validator(39            {40                "anyOf": [41                    *[True] * (NUM_USELESS // 2),42                    subschema,43                    *[True] * (NUM_USELESS // 2),44                ],45            },46        ),47        "allOf": Validator(48            {49                "allOf": [50                    *[True] * (NUM_USELESS // 2),51                    subschema,52                    *[True] * (NUM_USELESS // 2),53                ],54            },55        ),56    },57    "useless successful subschemas (end)": {58        "anyOf": Validator({"anyOf": [*[True] * NUM_USELESS, subschema]}),59        "allOf": Validator({"allOf": [*[True] * NUM_USELESS, subschema]}),60    },61    "useless failing subschemas (beginning)": {62        "anyOf": Validator({"anyOf": [subschema, *[False] * NUM_USELESS]}),63        "oneOf": Validator({"oneOf": [subschema, *[False] * NUM_USELESS]}),64    },65    "useless failing subschemas (middle)": {66        "anyOf": Validator(67            {68                "anyOf": [69                    *[False] * (NUM_USELESS // 2),70                    subschema,71                    *[False] * (NUM_USELESS // 2),72                ],73            },74        ),75        "oneOf": Validator(76            {77                "oneOf": [78                    *[False] * (NUM_USELESS // 2),79                    subschema,80                    *[False] * (NUM_USELESS // 2),81                ],82            },83        ),84    },85    "useless failing subschemas (end)": {86        "anyOf": Validator({"anyOf": [*[False] * NUM_USELESS, subschema]}),87        "oneOf": Validator({"oneOf": [*[False] * NUM_USELESS, subschema]}),88    },89}90 91if __name__ == "__main__":92    runner = Runner()93 94    runner.bench_func("baseline valid", lambda: baseline.is_valid(valid))95    runner.bench_func("baseline invalid", lambda: baseline.is_valid(invalid))96 97    for group, applicators in by_name.items():98        for applicator, validator in applicators.items():99            runner.bench_func(100                f"{group}: {applicator} valid",101                lambda validator=validator: validator.is_valid(valid),102            )103            runner.bench_func(104                f"{group}: {applicator} invalid",105                lambda validator=validator: validator.is_valid(invalid),106            )107 
codekingpro/portable-devtools · Team Ai