Skip to content

Commit

Permalink
Use type-specific size checks from JSON Toolkit (#221)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <[email protected]>
  • Loading branch information
jviotti authored Nov 22, 2024
1 parent 2a28832 commit f36d332
Show file tree
Hide file tree
Showing 4 changed files with 83 additions and 25 deletions.
2 changes: 1 addition & 1 deletion DEPENDENCIES
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
vendorpull https://github.com/sourcemeta/vendorpull dea311b5bfb53b6926a4140267959ae334d3ecf4
noa https://github.com/sourcemeta/noa caad2e1ceedf9fd1a18686a6a6d1e2b9757ead75
jsontoolkit https://github.com/sourcemeta/jsontoolkit aae184d87d6c4efe600cfb3c85163eda61f207c4
jsontoolkit https://github.com/sourcemeta/jsontoolkit c8c1f6bb8530b0fe0aa83bdfccb8ccb8db5e54ea
googletest https://github.com/google/googletest a7f443b80b105f940225332ed3c31f2790092f47
googlebenchmark https://github.com/google/benchmark 378fe693a1ef51500db21b11ff05a8018c5f0e55
jsonschema-test-suite https://github.com/json-schema-org/JSON-Schema-Test-Suite c2badb1298a8698f86dadf1aea7b44b3a894e5ac
43 changes: 23 additions & 20 deletions src/evaluator/dispatch.inc.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(assertion.value.size() > 1);

// Otherwise there is no way the instance can satisfy it anyway
if (assertion.value.size() <= target.size()) {
if (assertion.value.size() <= target.object_size()) {
result = true;
for (const auto &property : assertion.value) {
if (!target.defines(property)) {
Expand Down Expand Up @@ -125,8 +125,9 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(!maximum.has_value() || maximum.value() >= minimum);
// Require early breaking
assert(!std::get<2>(assertion.value));
result = target.type() == JSON::Type::String && target.size() >= minimum &&
(!maximum.has_value() || target.size() <= maximum.value());
result = target.type() == JSON::Type::String &&
target.string_size() >= minimum &&
(!maximum.has_value() || target.string_size() <= maximum.value());
EVALUATE_END(assertion, AssertionTypeStringBounded);
}

Expand All @@ -138,8 +139,9 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(!maximum.has_value() || maximum.value() >= minimum);
// Require early breaking
assert(!std::get<2>(assertion.value));
result = target.type() == JSON::Type::Array && target.size() >= minimum &&
(!maximum.has_value() || target.size() <= maximum.value());
result = target.type() == JSON::Type::Array &&
target.array_size() >= minimum &&
(!maximum.has_value() || target.array_size() <= maximum.value());
EVALUATE_END(assertion, AssertionTypeArrayBounded);
}

Expand All @@ -151,8 +153,9 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(!maximum.has_value() || maximum.value() >= minimum);
// Require early breaking
assert(!std::get<2>(assertion.value));
result = target.type() == JSON::Type::Object && target.size() >= minimum &&
(!maximum.has_value() || target.size() <= maximum.value());
result = target.type() == JSON::Type::Object &&
target.object_size() >= minimum &&
(!maximum.has_value() || target.object_size() <= maximum.value());
EVALUATE_END(assertion, AssertionTypeObjectBounded);
}

Expand All @@ -176,25 +179,25 @@ switch (static_cast<InstructionIndex>(instruction.index())) {

case IS_INSTRUCTION(AssertionArraySizeLess): {
EVALUATE_BEGIN(assertion, AssertionArraySizeLess, target.is_array());
result = (target.size() < assertion.value);
result = (target.array_size() < assertion.value);
EVALUATE_END(assertion, AssertionArraySizeLess);
}

case IS_INSTRUCTION(AssertionArraySizeGreater): {
EVALUATE_BEGIN(assertion, AssertionArraySizeGreater, target.is_array());
result = (target.size() > assertion.value);
result = (target.array_size() > assertion.value);
EVALUATE_END(assertion, AssertionArraySizeGreater);
}

case IS_INSTRUCTION(AssertionObjectSizeLess): {
EVALUATE_BEGIN(assertion, AssertionObjectSizeLess, target.is_object());
result = (target.size() < assertion.value);
result = (target.object_size() < assertion.value);
EVALUATE_END(assertion, AssertionObjectSizeLess);
}

case IS_INSTRUCTION(AssertionObjectSizeGreater): {
EVALUATE_BEGIN(assertion, AssertionObjectSizeGreater, target.is_object());
result = (target.size() > assertion.value);
result = (target.object_size() > assertion.value);
EVALUATE_END(assertion, AssertionObjectSizeGreater);
}

Expand Down Expand Up @@ -370,7 +373,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(!assertion.children.empty());
result = target.empty();
const auto prefixes{assertion.children.size() - 1};
const auto array_size{target.size()};
const auto array_size{target.array_size()};
if (!result) [[likely]] {
const auto pointer{array_size == prefixes
? prefixes
Expand All @@ -395,7 +398,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(!assertion.children.empty());
result = target.empty();
const auto prefixes{assertion.children.size() - 1};
const auto array_size{target.size()};
const auto array_size{target.array_size()};
if (!result) [[likely]] {
const auto pointer{array_size == prefixes
? prefixes
Expand Down Expand Up @@ -481,7 +484,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {

case IS_INSTRUCTION(LogicalWhenArraySizeGreater): {
EVALUATE_BEGIN(logical, LogicalWhenArraySizeGreater,
target.is_array() && target.size() > logical.value);
target.is_array() && target.array_size() > logical.value);
result = true;
for (const auto &child : logical.children) {
if (!EVALUATE_RECURSE(child, target)) {
Expand Down Expand Up @@ -1096,7 +1099,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
// Otherwise if the number of properties in the instance
// is larger than the whitelist, then it already violated
// the whitelist?
if (target.size() <= loop.value.size()) {
if (target.object_size() <= loop.value.size()) {
result = true;
for (const auto &entry : target.as_object()) {
if (!loop.value.contains(entry.first)) {
Expand Down Expand Up @@ -1247,7 +1250,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
}
}
#else
for (std::size_t index = 0; index < target.size(); index++) {
for (std::size_t index = 0; index < target.array_size(); index++) {
if (track) {
context.instance_location.push_back(index);
}
Expand All @@ -1273,10 +1276,10 @@ switch (static_cast<InstructionIndex>(instruction.index())) {

case IS_INSTRUCTION(LoopItemsFrom): {
EVALUATE_BEGIN(loop, LoopItemsFrom,
target.is_array() && loop.value < target.size());
target.is_array() && loop.value < target.array_size());
assert(!loop.children.empty());
result = true;
for (std::size_t index = loop.value; index < target.size(); index++) {
for (std::size_t index = loop.value; index < target.array_size(); index++) {
if (track) {
context.instance_location.push_back(index);
}
Expand Down Expand Up @@ -1304,7 +1307,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
assert(!loop.children.empty());
result = true;

for (std::size_t index = 0; index < target.size(); index++) {
for (std::size_t index = 0; index < target.array_size(); index++) {
if (context.is_evaluated(index)) {
continue;
}
Expand Down Expand Up @@ -1383,7 +1386,7 @@ switch (static_cast<InstructionIndex>(instruction.index())) {
result = minimum == 0 && target.empty();
auto match_count{std::numeric_limits<decltype(minimum)>::min()};

for (std::size_t index = 0; index < target.size(); index++) {
for (std::size_t index = 0; index < target.array_size(); index++) {
if (track) {
context.instance_location.push_back(index);
}
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

22 changes: 18 additions & 4 deletions vendor/jsontoolkit/src/json/json_value.cc

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 comments on commit f36d332

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Benchmark suite Current: f36d332 Previous: 2a28832 Ratio
Compiler_Draft6_AdaptiveCard 36093679958.00017 ns/iter 31678212334.000023 ns/iter 1.14
Compiler_2019_09_OMC_JSON_V2 7131604874.999993 ns/iter 6696227374.999921 ns/iter 1.07
Evaluator_Draft4_Meta_1_No_Callback 251.28531271267607 ns/iter 242.3087175933004 ns/iter 1.04
Evaluator_Draft4_Required_Properties 328.66539161937055 ns/iter 327.21737521683275 ns/iter 1.00
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 19.083052222450508 ns/iter 19.216844528886103 ns/iter 0.99
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 10.224152134778636 ns/iter 10.099205979714261 ns/iter 1.01
Evaluator_Draft4_Items_Schema 333.96571935692805 ns/iter 334.5445362278781 ns/iter 1.00
Evaluator_Draft4_Nested_Object 3.0079376604396817 ns/iter 2.8233337860369985 ns/iter 1.07
Evaluator_Draft4_Properties_Triad_Optional 1041.9244625121826 ns/iter 979.0913501084918 ns/iter 1.06
Evaluator_Draft4_Properties_Triad_Closed 714.134866020356 ns/iter 677.2368328965829 ns/iter 1.05
Evaluator_Draft4_Properties_Triad_Required 1006.8749795077306 ns/iter 1023.9650169773289 ns/iter 0.98
Evaluator_Draft4_Properties_Closed 78.98922587082753 ns/iter 77.92221365581493 ns/iter 1.01
Evaluator_Draft4_Non_Recursive_Ref 11.634465801608295 ns/iter 11.262310670978174 ns/iter 1.03
Evaluator_Draft4_Pattern_Properties_True 1180.0250451034753 ns/iter 1112.6832301003924 ns/iter 1.06
Evaluator_Draft4_Ref_To_Single_Property 11.444462367701366 ns/iter 11.713605718800718 ns/iter 0.98
Evaluator_Draft4_Additional_Properties_Type 25.40744109585129 ns/iter 24.70410679230907 ns/iter 1.03
Evaluator_Draft4_Nested_Oneof 69.34652647767906 ns/iter 67.1504635273315 ns/iter 1.03
Evaluator_Draft4_Long_Enum 29.48612725637489 ns/iter 28.171592261866962 ns/iter 1.05
Evaluator_Draft4_Type_Object 6.210611056539713 ns/iter 5.999283965998817 ns/iter 1.04
Evaluator_Draft6_Property_Names 134.7043210183729 ns/iter 134.67229755526725 ns/iter 1.00
Evaluator_Draft7_If_Then_Else 27.561032462112188 ns/iter 27.509085617254687 ns/iter 1.00
Evaluator_Draft7_Vercel_1 89082.30346051062 ns/iter 89267.65040140382 ns/iter 1.00
Evaluator_2019_09_Unevaluated_Properties 153.61020285926182 ns/iter 145.90553554123068 ns/iter 1.05
Evaluator_2019_09_OMC_JSON_V2_1 6130.045183491171 ns/iter 5898.576552945683 ns/iter 1.04
Evaluator_2020_12_Dynamic_Ref 540.4699035861798 ns/iter 540.1651505918461 ns/iter 1.00

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Benchmark suite Current: f36d332 Previous: 2a28832 Ratio
Compiler_Draft6_AdaptiveCard 58183343083.00001 ns/iter 59278917462.99997 ns/iter 0.98
Compiler_2019_09_OMC_JSON_V2 11033508109.000025 ns/iter 11258278849.000021 ns/iter 0.98
Evaluator_Draft4_Meta_1_No_Callback 357.13525267375627 ns/iter 374.24858323429237 ns/iter 0.95
Evaluator_Draft4_Required_Properties 775.1065839248705 ns/iter 772.8428451473072 ns/iter 1.00
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 39.61165982360685 ns/iter 39.50168499778884 ns/iter 1.00
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 28.822824618006845 ns/iter 24.087871829215793 ns/iter 1.20
Evaluator_Draft4_Items_Schema 737.7021431815015 ns/iter 773.1898370571616 ns/iter 0.95
Evaluator_Draft4_Nested_Object 4.949201024600462 ns/iter 4.872653383820378 ns/iter 1.02
Evaluator_Draft4_Properties_Triad_Optional 1229.334113104419 ns/iter 1231.3047429957296 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Closed 964.3866349894048 ns/iter 957.6400495926879 ns/iter 1.01
Evaluator_Draft4_Properties_Triad_Required 1263.3320326708363 ns/iter 1276.9768776508893 ns/iter 0.99
Evaluator_Draft4_Properties_Closed 138.601061052694 ns/iter 141.0011801030469 ns/iter 0.98
Evaluator_Draft4_Non_Recursive_Ref 29.45237198515267 ns/iter 33.00169281597821 ns/iter 0.89
Evaluator_Draft4_Pattern_Properties_True 1784.2889986457953 ns/iter 1787.6555375821874 ns/iter 1.00
Evaluator_Draft4_Ref_To_Single_Property 29.10320135085363 ns/iter 23.355794454386018 ns/iter 1.25
Evaluator_Draft4_Additional_Properties_Type 53.52147018681706 ns/iter 62.187327838784974 ns/iter 0.86
Evaluator_Draft4_Nested_Oneof 137.60840661303922 ns/iter 135.22383813206682 ns/iter 1.02
Evaluator_Draft4_Long_Enum 22.7908795888964 ns/iter 22.930873676208183 ns/iter 0.99
Evaluator_Draft4_Type_Object 11.784469572081457 ns/iter 11.824724054402804 ns/iter 1.00
Evaluator_Draft6_Property_Names 240.96059930902496 ns/iter 249.90898873734324 ns/iter 0.96
Evaluator_Draft7_If_Then_Else 56.45406939691196 ns/iter 59.06032344434903 ns/iter 0.96
Evaluator_Draft7_Vercel_1 117641.28172966726 ns/iter 119466.24821125726 ns/iter 0.98
Evaluator_2019_09_Unevaluated_Properties 193.03226991074274 ns/iter 186.51068985094665 ns/iter 1.03
Evaluator_2019_09_OMC_JSON_V2_1 8411.391341020731 ns/iter 8456.706141356806 ns/iter 0.99
Evaluator_2020_12_Dynamic_Ref 819.7028435132822 ns/iter 832.4665527527819 ns/iter 0.98

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Benchmark suite Current: f36d332 Previous: 2a28832 Ratio
Evaluator_2020_12_Dynamic_Ref 831.1303165637275 ns/iter 863.5203899352946 ns/iter 0.96
Evaluator_2019_09_Unevaluated_Properties 239.59753954305705 ns/iter 240.1053008335215 ns/iter 1.00
Evaluator_2019_09_OMC_JSON_V2_1 11047.468786301491 ns/iter 10588.47526809492 ns/iter 1.04
Evaluator_Draft7_If_Then_Else 50.54116192370044 ns/iter 50.70147034932877 ns/iter 1.00
Evaluator_Draft7_Vercel_1 128575.13915005919 ns/iter 125940.50855700696 ns/iter 1.02
Evaluator_Draft6_Property_Names 495.40301898417954 ns/iter 495.10712039168794 ns/iter 1.00
Evaluator_Draft4_Meta_1_No_Callback 432.5163638996561 ns/iter 427.21730034995016 ns/iter 1.01
Evaluator_Draft4_Required_Properties 1724.9088710909425 ns/iter 1633.6315472859153 ns/iter 1.06
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 40.22350222356888 ns/iter 38.42453363510058 ns/iter 1.05
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 34.43461045732989 ns/iter 31.664060150225293 ns/iter 1.09
Evaluator_Draft4_Items_Schema 553.9700168901784 ns/iter 571.7802513295231 ns/iter 0.97
Evaluator_Draft4_Nested_Object 3.7892971246923417 ns/iter 4.096474711694922 ns/iter 0.93
Evaluator_Draft4_Properties_Triad_Optional 1301.8883993772538 ns/iter 1278.3296337523734 ns/iter 1.02
Evaluator_Draft4_Properties_Triad_Closed 1052.9199163306778 ns/iter 1015.6592105624054 ns/iter 1.04
Evaluator_Draft4_Properties_Triad_Required 1343.4847070939447 ns/iter 1333.6296259037522 ns/iter 1.01
Evaluator_Draft4_Properties_Closed 188.02226747832347 ns/iter 180.82575564946805 ns/iter 1.04
Evaluator_Draft4_Non_Recursive_Ref 53.06290319002012 ns/iter 48.969062430003575 ns/iter 1.08
Evaluator_Draft4_Pattern_Properties_True 1805.4023351805927 ns/iter 1697.533132472006 ns/iter 1.06
Evaluator_Draft4_Ref_To_Single_Property 37.90492442731999 ns/iter 35.81018784926345 ns/iter 1.06
Evaluator_Draft4_Additional_Properties_Type 112.1023967734924 ns/iter 103.45440642503006 ns/iter 1.08
Evaluator_Draft4_Nested_Oneof 109.07841739620139 ns/iter 109.94613001498419 ns/iter 0.99
Evaluator_Draft4_Long_Enum 20.718296789208008 ns/iter 19.941471168645165 ns/iter 1.04
Evaluator_Draft4_Type_Object 10.320976149005295 ns/iter 9.703090977244791 ns/iter 1.06
Compiler_2019_09_OMC_JSON_V2 11697022094.999966 ns/iter 11293504253.000038 ns/iter 1.04
Compiler_Draft6_AdaptiveCard 68195697272.999954 ns/iter 65123251188.999916 ns/iter 1.05

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/gcc)

Benchmark suite Current: f36d332 Previous: 2a28832 Ratio
Compiler_Draft6_AdaptiveCard 44948783159.25598 ns/iter 62833444833.75549 ns/iter 0.72
Compiler_2019_09_OMC_JSON_V2 8131855010.986328 ns/iter 10425703763.961792 ns/iter 0.78
Evaluator_Draft4_Meta_1_No_Callback 256.85780717926434 ns/iter 259.6306723694784 ns/iter 0.99
Evaluator_Draft4_Required_Properties 428.79585319217466 ns/iter 565.0649070739746 ns/iter 0.76
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 23.236443791733535 ns/iter 25.547222213889846 ns/iter 0.91
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 13.260548149079384 ns/iter 13.948560355846682 ns/iter 0.95
Evaluator_Draft4_Items_Schema 507.00515193149374 ns/iter 599.9599415153137 ns/iter 0.85
Evaluator_Draft4_Nested_Object 2.0018675226483205 ns/iter 2.031520136394752 ns/iter 0.99
Evaluator_Draft4_Properties_Triad_Optional 1059.3138558991611 ns/iter 1224.0158796879687 ns/iter 0.87
Evaluator_Draft4_Properties_Triad_Closed 865.1889159228274 ns/iter 1078.6944108153264 ns/iter 0.80
Evaluator_Draft4_Properties_Triad_Required 1043.5077905208382 ns/iter 1131.9322697361742 ns/iter 0.92
Evaluator_Draft4_Properties_Closed 96.23706327600729 ns/iter 97.8920836322735 ns/iter 0.98
Evaluator_Draft4_Non_Recursive_Ref 22.887353744639036 ns/iter 20.640811998096936 ns/iter 1.11
Evaluator_Draft4_Pattern_Properties_True 1510.6427741497596 ns/iter 1611.9557009012121 ns/iter 0.94
Evaluator_Draft4_Ref_To_Single_Property 12.813284549208822 ns/iter 12.938664416532088 ns/iter 0.99
Evaluator_Draft4_Additional_Properties_Type 37.429182352864956 ns/iter 39.113608427706936 ns/iter 0.96
Evaluator_Draft4_Nested_Oneof 84.72574580843845 ns/iter 85.32582456135906 ns/iter 0.99
Evaluator_Draft4_Long_Enum 10.698140457884756 ns/iter 16.178285067475027 ns/iter 0.66
Evaluator_Draft4_Type_Object 6.134258865466712 ns/iter 8.254006527108748 ns/iter 0.74
Evaluator_Draft6_Property_Names 162.30149598539606 ns/iter 207.23520098386604 ns/iter 0.78
Evaluator_Draft7_If_Then_Else 30.31708895926071 ns/iter 34.284852065344936 ns/iter 0.88
Evaluator_Draft7_Vercel_1 91798.32320429977 ns/iter 91752.57365309159 ns/iter 1.00
Evaluator_2019_09_Unevaluated_Properties 151.81391335258013 ns/iter 158.73758087923824 ns/iter 0.96
Evaluator_2019_09_OMC_JSON_V2_1 6141.279857357384 ns/iter 8469.785710647282 ns/iter 0.73
Evaluator_2020_12_Dynamic_Ref 618.485796801403 ns/iter 862.3490745825543 ns/iter 0.72

This comment was automatically generated by workflow using github-action-benchmark.

@github-actions
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Benchmark suite Current: f36d332 Previous: 2a28832 Ratio
Compiler_Draft6_AdaptiveCard 120166883500.00005 ns/iter 122551078299.99997 ns/iter 0.98
Compiler_2019_09_OMC_JSON_V2 25876993399.999947 ns/iter 26485556900.00012 ns/iter 0.98
Evaluator_Draft4_Meta_1_No_Callback 440.49395790336996 ns/iter 436.05910831285746 ns/iter 1.01
Evaluator_Draft4_Required_Properties 741.1213392858583 ns/iter 729.3436383929271 ns/iter 1.02
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 38.35329574369155 ns/iter 36.3448564530501 ns/iter 1.06
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 22.357657116542242 ns/iter 21.567953125000372 ns/iter 1.04
Evaluator_Draft4_Items_Schema 633.3673214285795 ns/iter 588.2202000000234 ns/iter 1.08
Evaluator_Draft4_Nested_Object 4.0310196946974335 ns/iter 4.022164605396754 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Optional 4278.633246145345 ns/iter 5438.077678572231 ns/iter 0.79
Evaluator_Draft4_Properties_Triad_Closed 3404.3342041690116 ns/iter 4400.919194992262 ns/iter 0.77
Evaluator_Draft4_Properties_Triad_Required 4316.362715908338 ns/iter 5452.1142857148725 ns/iter 0.79
Evaluator_Draft4_Properties_Closed 142.62886160710968 ns/iter 146.91107142853963 ns/iter 0.97
Evaluator_Draft4_Non_Recursive_Ref 16.321310267858482 ns/iter 15.970247767858684 ns/iter 1.02
Evaluator_Draft4_Pattern_Properties_True 8486.29241071462 ns/iter 14055.902205794922 ns/iter 0.60
Evaluator_Draft4_Ref_To_Single_Property 23.439147059837445 ns/iter 22.60210019417414 ns/iter 1.04
Evaluator_Draft4_Additional_Properties_Type 29.856245535709395 ns/iter 31.542009867853075 ns/iter 0.95
Evaluator_Draft4_Nested_Oneof 148.1490401785785 ns/iter 140.50923926297574 ns/iter 1.05
Evaluator_Draft4_Long_Enum 21.785965624999903 ns/iter 20.91271874999734 ns/iter 1.04
Evaluator_Draft4_Type_Object 9.995215133949568 ns/iter 9.616124957071735 ns/iter 1.04
Evaluator_Draft6_Property_Names 412.04241017670097 ns/iter 413.8378637693064 ns/iter 1.00
Evaluator_Draft7_If_Then_Else 52.17483928571401 ns/iter 47.900545712064904 ns/iter 1.09
Evaluator_Draft7_Vercel_1 134379.58928571042 ns/iter 136216.95460026438 ns/iter 0.99
Evaluator_2019_09_Unevaluated_Properties 441.6433415240537 ns/iter 735.0315848214502 ns/iter 0.60
Evaluator_2019_09_OMC_JSON_V2_1 9696.824567747892 ns/iter 9949.434374998846 ns/iter 0.97
Evaluator_2020_12_Dynamic_Ref 1377.206706604116 ns/iter 1412.9168022690549 ns/iter 0.97

This comment was automatically generated by workflow using github-action-benchmark.

Please sign in to comment.