43 lines
1.1 KiB
Python
43 lines
1.1 KiB
Python
"""
|
|
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))
|