Skip to content

Commit 179656d

Browse files
committed
issue python-jsonschema#158: Merge unroll_scopes & split_scopes optimization-branches.
* FIX 2 forgotten test-case on resolver-URIs from split_scopes. x 1.8 faster in big referenced model.
2 parents 0306213 + a22789a commit 179656d

File tree

3 files changed

+879
-833
lines changed

3 files changed

+879
-833
lines changed

jsonschema/tests/test_benchmarks.py

Lines changed: 44 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,20 @@ def test_V3_meta_schema(self):
4646
278 runs in 2.00 sec
4747
ms/run: mean(7.17), std(0.56), MIN(6.50), MAX(10.51)
4848
49-
splitted_fragments: Time @ Xeon 3.2GHz (x 1.05 faster)::
49+
unroll_scopes (a22789a): Time @ Xeon 3.2GHz (x 1.19 faster)::
50+
51+
344 runs in 2.00 sec
52+
ms/run: mean(5.80), std(0.41), MIN(5.50), MAX(8.00)
53+
54+
splitted_fragments (0306213): Time @ Xeon 3.2GHz (x 1.05 faster)::
5055
5156
290 runs in 2.00 sec
5257
ms/run: mean(6.88), std(0.66), MIN(6.00), MAX(12.00)
58+
59+
combine_untoll_split_scopes: Time @ Xeon 3.2GHz (x 1.25 faster)::
60+
61+
347 runs in 2.00 sec
62+
ms/run: mean(5.75), std(0.67), MIN(5.00), MAX(11.50)
5363
"""
5464

5565
stats = []
@@ -71,10 +81,20 @@ def test_V4_meta_schema(self):
7181
164 runs in 2.00 sec
7282
ms/run: mean(12.15), std(1.36), MIN(11.01), MAX(21.02)
7383
74-
splitted_fragments: Time @ Xeon 3.2GHz (x 1.16 faster)::
84+
unroll_scopes (a22789a): Time @ Xeon 3.2GHz (x 1.09 faster)::
85+
86+
195 runs in 2.01 sec
87+
ms/run: mean(10.24), std(0.70), MIN(9.50), MAX(14.00)
88+
89+
splitted_fragments (0306213): Time @ Xeon 3.2GHz (x 1.16 faster)::
7590
7691
191 runs in 2.01 sec
7792
ms/run: mean(10.47), std(0.81), MIN(9.50), MAX(14.00)
93+
94+
combine_untoll_split_scopes: Time @ Xeon 3.2GHz (x 1.38 faster)::
95+
96+
228 runs in 2.01 sec
97+
ms/run: mean(8.77), std(0.74), MIN(8.00), MAX(12.50)
7898
"""
7999

80100
stats = []
@@ -96,10 +116,20 @@ def test_both_meta_schemas(self):
96116
104 runs in 2.01 sec
97117
ms/run: mean(19.13), std(1.12), MIN(18.01), MAX(23.02)
98118
99-
splitted_fragments: Time @ Xeon 3.2GHz (x 1.11 faster)::
119+
unroll_scopes (a22789a): Time @ Xeon 3.2GHz (x 1.13 faster)::
120+
121+
115 runs in 2.00 sec
122+
ms/run: mean(17.24), std(2.40), MIN(15.00), MAX(26.00)
123+
124+
splitted_fragments (0306213): Time @ Xeon 3.2GHz (x 1.11 faster)::
100125
101126
115 runs in 2.00 sec
102127
ms/run: mean(17.24), std(1.24), MIN(16.00), MAX(24.51)
128+
129+
combine_untoll_split_scopes: Time @ Xeon 3.2GHz (x 1.32 faster)::
130+
131+
138 runs in 2.01 sec
132+
ms/run: mean(14.47), std(1.03), MIN(13.50), MAX(19.50)
103133
"""
104134

105135
v_classes = [Draft3Validator, Draft4Validator]
@@ -123,10 +153,20 @@ def test_ref_model(self):
123153
16 runs in 2.00 sec
124154
ms/run: mean(117.80), std(4.32), MIN(113.09), MAX(127.60)
125155
126-
splitted_fragments: Time @ Xeon 3.2GHz (x 1.12 faster)::
156+
unroll_scopes (a22789a): Time @ Xeon 3.2GHz (x 1.43 faster)::
157+
158+
27 runs in 2.07 sec
159+
ms/run: mean(73.77), std(6.58), MIN(65.50), MAX(94.00)
160+
161+
splitted_fragments (0306213): Time @ Xeon 3.2GHz (x 1.12 faster)::
127162
128163
19 runs in 2.10 sec
129164
ms/run: mean(105.07), std(2.45), MIN(102.02), MAX(109.02)
165+
166+
combine_untoll_split_scopes: Time @ Xeon 3.2GHz (x 1.80 faster)::
167+
168+
30 runs in 2.03 sec
169+
ms/run: mean(65.35), std(4.83), MIN(60.01), MAX(82.02)
130170
"""
131171

132172
stats = []

0 commit comments

Comments
 (0)