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