""" A benchmark which tries to compare the possible slow subparts of validation. """ from referencing import Registry from referencing.jsonschema import DRAFT202012 from rpds import HashTrieMap, HashTrieSet from jsonschema import Draft202012Validator schema = { "type": "array", "minLength": 1, "maxLength": 1, "items": {"type": "integer"}, } hmap = HashTrieMap() hset = HashTrieSet() registry = Registry() v = Draft202012Validator(schema) def registry_data_structures(): return hmap.insert("foo", "bar"), hset.insert("foo") def registry_add(): resource = DRAFT202012.create_resource(schema) return registry.with_resource(uri="urn:example", resource=resource) if __name__ == "__main__": from pyperf import Runner runner = Runner() runner.bench_func("HashMap/HashSet insertion", registry_data_structures) runner.bench_func("Registry insertion", registry_add) runner.bench_func("Success", lambda: v.is_valid([1])) runner.bench_func("Failure", lambda: v.is_valid(["foo"])) runner.bench_func("Metaschema validation", lambda: v.check_schema(schema))