You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			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))
 |