-
-
Notifications
You must be signed in to change notification settings - Fork 602
Closed
Labels
BugSomething doesn't work the way it should.Something doesn't work the way it should.
Description
Hi @Julian, first of all thanks for this library and all the hard work. We rely heavily on it and are delighted to see Draft 2020-12 support as it is required for OpenAPI 3.1.0
When updating, I noticed our test suite ran noticeably slower. I compiled a quick reproduction for you. On my machine I get a 5x slowdown with the new version. Is this performance hit to be expected due to the new capabilities or is it a regression?
import jsonschema
import yaml
import json
import time
# https://raw.githubusercontent.com/tfranzel/drf-spectacular/master/tests/test_basic.yml
with open('tests/test_basic.yml') as fh:
data = yaml.load(fh.read(), Loader=yaml.SafeLoader)
# https://raw.githubusercontent.com/tfranzel/drf-spectacular/master/drf_spectacular/validation/openapi3_schema.json
# which comes from:
# https://github.com/OAI/OpenAPI-Specification/blob/6d17b631fff35186c495b9e7d340222e19d60a71/schemas/v3.0/schema.json
with open('drf_spectacular/validation/openapi3_schema.json') as fh:
openapi3_schema_spec = json.load(fh)
t_acc = 0
for i in range(500):
t0 = time.time()
jsonschema.validate(instance=data, schema=openapi3_schema_spec)
t1 = time.time()
t_acc += t1 - t0
print(f'{t_acc} sec')✗ python --version; pip freeze | grep json; python test.py
Python 3.9.5
jsonschema==3.2.0
5.254251718521118 sec
✗ python --version; pip freeze | grep json; python test.py
Python 3.9.5
jsonschema==4.0.1
28.189855813980103 sec
✗ python --version; pip freeze | grep json; python test.py
Python 3.9.7
jsonschema==4.2.1
27.27832531929016 sec
✗ python --version; pip freeze | grep json; python test.py
Python 3.9.7
jsonschema==4.3.1
8.10183048248291 secEDIT: included measurement for 4.2.1 release
EDIT: included measurement for 4.3.1 release
andylamp, tdamsma, ynohat, phihag, the21st and 3 moreJulian
Metadata
Metadata
Assignees
Labels
BugSomething doesn't work the way it should.Something doesn't work the way it should.