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.
		
		
		
		
		
			
		
			
				
	
	
		
			29 lines
		
	
	
		
			786 B
		
	
	
	
		
			Python
		
	
			
		
		
	
	
			29 lines
		
	
	
		
			786 B
		
	
	
	
		
			Python
		
	
"""
 | 
						|
A benchmark for validation of the `contains` keyword.
 | 
						|
"""
 | 
						|
 | 
						|
from pyperf import Runner
 | 
						|
 | 
						|
from jsonschema import Draft202012Validator
 | 
						|
 | 
						|
schema = {
 | 
						|
    "type": "array",
 | 
						|
    "contains": {"const": 37},
 | 
						|
}
 | 
						|
validator = Draft202012Validator(schema)
 | 
						|
 | 
						|
size = 1000
 | 
						|
beginning = [37] + [0] * (size - 1)
 | 
						|
middle = [0] * (size // 2) + [37] + [0] * (size // 2)
 | 
						|
end = [0] * (size - 1) + [37]
 | 
						|
invalid = [0] * size
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    runner = Runner()
 | 
						|
    runner.bench_func("baseline", lambda: validator.is_valid([]))
 | 
						|
    runner.bench_func("beginning", lambda: validator.is_valid(beginning))
 | 
						|
    runner.bench_func("middle", lambda: validator.is_valid(middle))
 | 
						|
    runner.bench_func("end", lambda: validator.is_valid(end))
 | 
						|
    runner.bench_func("invalid", lambda: validator.is_valid(invalid))
 |