123456789101112131415161718192021222324252627282930313233343536373839404142 |
- """
- 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))
|