47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
#! /usr/bin/env python
 | 
						|
"""
 | 
						|
A *very* basic performance test.
 | 
						|
 | 
						|
"""
 | 
						|
 | 
						|
from __future__ import print_function
 | 
						|
import argparse
 | 
						|
import textwrap
 | 
						|
import timeit
 | 
						|
 | 
						|
 | 
						|
IMPORT = "from jsonschema import Draft3Validator, Draft4Validator, validate\n"
 | 
						|
 | 
						|
 | 
						|
parser = argparse.ArgumentParser()
 | 
						|
parser.add_argument("-n", "--number", type=int, default=100)
 | 
						|
arguments = parser.parse_args()
 | 
						|
 | 
						|
 | 
						|
print("Validating {0} times.".format(arguments.number))
 | 
						|
 | 
						|
 | 
						|
for name, benchmark in (
 | 
						|
    (
 | 
						|
        "Simple", """
 | 
						|
        validator = Draft3Validator(
 | 
						|
            {"type" : "object", "properties" : {"foo" : {"required" : True}}}
 | 
						|
        )
 | 
						|
        instance = {"foo" : 12, "bar" : 13}
 | 
						|
        """
 | 
						|
    ),
 | 
						|
    (
 | 
						|
        "Meta schema", """
 | 
						|
        validator = Draft3Validator(Draft3Validator.META_SCHEMA)
 | 
						|
        instance = validator.META_SCHEMA
 | 
						|
        """
 | 
						|
    ),
 | 
						|
):
 | 
						|
    results = timeit.timeit(
 | 
						|
        number=arguments.number,
 | 
						|
        setup=IMPORT + textwrap.dedent(benchmark),
 | 
						|
        stmt="validator.validate(instance)",
 | 
						|
    )
 | 
						|
 | 
						|
    print("{0:15}: {1} seconds".format(name, results))
 |