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