| """ | |
| A benchmark for comparing equivalent validation of `const` and `enum`. | |
| """ | |
| from pyperf import Runner | |
| from jsonschema import Draft202012Validator | |
| value = [37] * 100 | |
| const_schema = {"const": list(value)} | |
| enum_schema = {"enum": [list(value)]} | |
| valid = list(value) | |
| invalid = [*valid, 73] | |
| const = Draft202012Validator(const_schema) | |
| enum = Draft202012Validator(enum_schema) | |
| assert const.is_valid(valid) | |
| assert enum.is_valid(valid) | |
| assert not const.is_valid(invalid) | |
| assert not enum.is_valid(invalid) | |
| if __name__ == "__main__": | |
| runner = Runner() | |
| runner.bench_func("const valid", lambda: const.is_valid(valid)) | |
| runner.bench_func("const invalid", lambda: const.is_valid(invalid)) | |
| runner.bench_func("enum valid", lambda: enum.is_valid(valid)) | |
| runner.bench_func("enum invalid", lambda: enum.is_valid(invalid)) | |