Skip to content

Commit

Permalink
Prepare new evaluators to extract handlers into functions (#214)
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 5ac082c commit adaee93
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 58 deletions.
5 changes: 2 additions & 3 deletions src/evaluator/evaluator.cc
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ using namespace sourcemeta::jsontoolkit;
inline auto
resolve_target(const std::optional<std::reference_wrapper<const JSON::String>>
&property_target,
const JSON &instance) -> const JSON & {
const JSON &instance) noexcept -> const JSON & {
if (property_target.has_value()) [[unlikely]] {
// In this case, we still need to return a string in order
// to cope with non-string keywords inside `propertyNames`
Expand All @@ -37,7 +37,7 @@ inline auto resolve_string_target(
const JSON &instance, const Pointer &relative_instance_location) noexcept
-> std::optional<std::reference_wrapper<const JSON::String>> {
if (property_target.has_value()) [[unlikely]] {
return property_target.value();
return property_target;
}

const auto &target{get(instance, relative_instance_location)};
Expand Down Expand Up @@ -72,7 +72,6 @@ auto evaluate(const Template &schema,
auto evaluate(const Template &schema,
const sourcemeta::jsontoolkit::JSON &instance) -> bool {
EvaluationContext context;

if (schema.second.dynamic || schema.second.track) {
return evaluate_complete(instance, context, schema.first, schema.second,
std::nullopt);
Expand Down
61 changes: 31 additions & 30 deletions src/evaluator/evaluator_complete.h
Original file line number Diff line number Diff line change
@@ -1,19 +1,6 @@
#ifndef SOURCEMETA_BLAZE_EVALUATOR_COMPLETE_H_
#define SOURCEMETA_BLAZE_EVALUATOR_COMPLETE_H_

namespace sourcemeta::blaze {

auto evaluate_complete_instruction(
const sourcemeta::blaze::Instruction &instruction,
const sourcemeta::blaze::Modifiers &modifiers,
const std::optional<sourcemeta::blaze::Callback> &callback,
const sourcemeta::jsontoolkit::JSON &instance,
const std::optional<
std::reference_wrapper<const sourcemeta::jsontoolkit::JSON::String>>
&property_target,
const std::uint64_t depth, sourcemeta::blaze::EvaluationContext &context)
-> bool {

#define EVALUATE_BEGIN(instruction_category, instruction_type, precondition) \
SOURCEMETA_TRACE_START(trace_id, SOURCEMETA_STRINGIFY(instruction_type)); \
const auto &instruction_category{std::get<instruction_type>(instruction)}; \
Expand Down Expand Up @@ -88,8 +75,8 @@ auto evaluate_complete_instruction(
const auto &target{maybe_target.value().get()}; \
bool result{false};

// This is a slightly complicated dance to avoid traversing the relative
// instance location twice.
// This is a slightly complicated dance to avoid traversing the relative
// instance location twice.
#define EVALUATE_BEGIN_TRY_TARGET(instruction_category, instruction_type, \
precondition) \
SOURCEMETA_TRACE_START(trace_id, SOURCEMETA_STRINGIFY(instruction_type)); \
Expand All @@ -99,7 +86,7 @@ auto evaluate_complete_instruction(
SOURCEMETA_TRACE_END(trace_id, SOURCEMETA_STRINGIFY(instruction_type)); \
return true; \
} \
auto target_check{ \
const auto target_check{ \
try_get(target, instruction_category.relative_instance_location)}; \
if (!target_check.has_value()) { \
SOURCEMETA_TRACE_END(trace_id, SOURCEMETA_STRINGIFY(instruction_type)); \
Expand Down Expand Up @@ -220,21 +207,20 @@ auto evaluate_complete_instruction(
std::cref(name), depth + 1, context)

#define SOURCEMETA_EVALUATOR_COMPLETE
#include "dispatch.inc.h"
#undef SOURCEMETA_EVALUATOR_COMPLETE

#undef EVALUATE_BEGIN
#undef EVALUATE_BEGIN_IF_STRING
#undef EVALUATE_BEGIN_TRY_TARGET
#undef EVALUATE_BEGIN_NO_PRECONDITION
#undef EVALUATE_BEGIN_NO_PRECONDITION_AND_NO_PUSH
#undef EVALUATE_BEGIN_PASS_THROUGH
#undef EVALUATE_END
#undef EVALUATE_END_NO_POP
#undef EVALUATE_END_PASS_THROUGH
#undef EVALUATE_ANNOTATION
#undef EVALUATE_RECURSE
#undef EVALUATE_RECURSE_ON_PROPERTY_NAME
namespace sourcemeta::blaze {

auto evaluate_complete_instruction(
const sourcemeta::blaze::Instruction &instruction,
const sourcemeta::blaze::Modifiers &modifiers,
const std::optional<sourcemeta::blaze::Callback> &callback,
const sourcemeta::jsontoolkit::JSON &instance,
const std::optional<
std::reference_wrapper<const sourcemeta::jsontoolkit::JSON::String>>
&property_target,
const std::uint64_t depth, sourcemeta::blaze::EvaluationContext &context)
-> bool {
#include "dispatch.inc.h"
}

inline auto
Expand Down Expand Up @@ -263,4 +249,19 @@ evaluate_complete(const sourcemeta::jsontoolkit::JSON &instance,

} // namespace sourcemeta::blaze

#undef SOURCEMETA_EVALUATOR_COMPLETE

#undef EVALUATE_BEGIN
#undef EVALUATE_BEGIN_IF_STRING
#undef EVALUATE_BEGIN_TRY_TARGET
#undef EVALUATE_BEGIN_NO_PRECONDITION
#undef EVALUATE_BEGIN_NO_PRECONDITION_AND_NO_PUSH
#undef EVALUATE_BEGIN_PASS_THROUGH
#undef EVALUATE_END
#undef EVALUATE_END_NO_POP
#undef EVALUATE_END_PASS_THROUGH
#undef EVALUATE_ANNOTATION
#undef EVALUATE_RECURSE
#undef EVALUATE_RECURSE_ON_PROPERTY_NAME

#endif
51 changes: 26 additions & 25 deletions src/evaluator/evaluator_fast.h
Original file line number Diff line number Diff line change
@@ -1,17 +1,6 @@
#ifndef SOURCEMETA_BLAZE_EVALUATOR_FAST_H_
#define SOURCEMETA_BLAZE_EVALUATOR_FAST_H_

namespace sourcemeta::blaze {

auto evaluate_fast_instruction(
const sourcemeta::blaze::Instruction &instruction,
const sourcemeta::jsontoolkit::JSON &instance,
const std::optional<
std::reference_wrapper<const sourcemeta::jsontoolkit::JSON::String>>
&property_target,
const std::uint64_t depth, sourcemeta::blaze::EvaluationContext &context)
-> bool {

#define EVALUATE_BEGIN(instruction_category, instruction_type, precondition) \
SOURCEMETA_TRACE_START(trace_id, SOURCEMETA_STRINGIFY(instruction_type)); \
const auto &instruction_category{std::get<instruction_type>(instruction)}; \
Expand Down Expand Up @@ -99,21 +88,18 @@ auto evaluate_fast_instruction(
evaluate_fast_instruction(child, target, std::cref(name), depth + 1, context)

#define SOURCEMETA_EVALUATOR_FAST
#include "dispatch.inc.h"
#undef SOURCEMETA_EVALUATOR_FAST

#undef EVALUATE_BEGIN
#undef EVALUATE_BEGIN_IF_STRING
#undef EVALUATE_BEGIN_TRY_TARGET
#undef EVALUATE_BEGIN_NO_PRECONDITION
#undef EVALUATE_BEGIN_NO_PRECONDITION_AND_NO_PUSH
#undef EVALUATE_BEGIN_PASS_THROUGH
#undef EVALUATE_END
#undef EVALUATE_END_NO_POP
#undef EVALUATE_END_PASS_THROUGH
#undef EVALUATE_ANNOTATION
#undef EVALUATE_RECURSE
#undef EVALUATE_RECURSE_ON_PROPERTY_NAME
namespace sourcemeta::blaze {

auto evaluate_fast_instruction(
const sourcemeta::blaze::Instruction &instruction,
const sourcemeta::jsontoolkit::JSON &instance,
const std::optional<
std::reference_wrapper<const sourcemeta::jsontoolkit::JSON::String>>
&property_target,
const std::uint64_t depth, sourcemeta::blaze::EvaluationContext &context)
-> bool {
#include "dispatch.inc.h"
}

inline auto evaluate_fast(const sourcemeta::jsontoolkit::JSON &instance,
Expand All @@ -133,4 +119,19 @@ inline auto evaluate_fast(const sourcemeta::jsontoolkit::JSON &instance,

} // namespace sourcemeta::blaze

#undef SOURCEMETA_EVALUATOR_FAST

#undef EVALUATE_BEGIN
#undef EVALUATE_BEGIN_IF_STRING
#undef EVALUATE_BEGIN_TRY_TARGET
#undef EVALUATE_BEGIN_NO_PRECONDITION
#undef EVALUATE_BEGIN_NO_PRECONDITION_AND_NO_PUSH
#undef EVALUATE_BEGIN_PASS_THROUGH
#undef EVALUATE_END
#undef EVALUATE_END_NO_POP
#undef EVALUATE_END_PASS_THROUGH
#undef EVALUATE_ANNOTATION
#undef EVALUATE_RECURSE
#undef EVALUATE_RECURSE_ON_PROPERTY_NAME

#endif

5 comments on commit adaee93

@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: adaee93 Previous: 5ac082c Ratio
Compiler_Draft6_AdaptiveCard 31692035165.99998 ns/iter 34475398917.00001 ns/iter 0.92
Compiler_2019_09_OMC_JSON_V2 6857476791.999943 ns/iter 6849322332.999918 ns/iter 1.00
Evaluator_Draft4_Meta_1_No_Callback 243.06404420186732 ns/iter 245.14961113868287 ns/iter 0.99
Evaluator_Draft4_Required_Properties 326.57903436718425 ns/iter 325.35670506492613 ns/iter 1.00
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 19.258943466517497 ns/iter 19.36227896136005 ns/iter 0.99
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 10.098268432877148 ns/iter 10.036202463051284 ns/iter 1.01
Evaluator_Draft4_Items_Schema 522.7163165268223 ns/iter 527.3563504509746 ns/iter 0.99
Evaluator_Draft4_Nested_Object 2.825542702373996 ns/iter 2.851215535448586 ns/iter 0.99
Evaluator_Draft4_Properties_Triad_Optional 990.7504537332105 ns/iter 1026.260151442473 ns/iter 0.97
Evaluator_Draft4_Properties_Triad_Closed 727.9422358348562 ns/iter 754.3246798241713 ns/iter 0.97
Evaluator_Draft4_Properties_Triad_Required 984.0580668919382 ns/iter 1165.2684482165937 ns/iter 0.84
Evaluator_Draft4_Properties_Closed 78.73474945830093 ns/iter 84.479645161715 ns/iter 0.93
Evaluator_Draft4_Non_Recursive_Ref 11.598280365072362 ns/iter 11.45871628398995 ns/iter 1.01
Evaluator_Draft4_Pattern_Properties_True 1180.4768913747855 ns/iter 1154.6227301637 ns/iter 1.02
Evaluator_Draft4_Ref_To_Single_Property 11.222379686187631 ns/iter 11.014593454014461 ns/iter 1.02
Evaluator_Draft4_Additional_Properties_Type 25.185993195012248 ns/iter 25.904615063573917 ns/iter 0.97
Evaluator_Draft4_Nested_Oneof 73.32681494449203 ns/iter 67.72819452076683 ns/iter 1.08
Evaluator_Draft4_Long_Enum 29.189978079430933 ns/iter 28.168366234144667 ns/iter 1.04
Evaluator_Draft4_Type_Object 5.989362447476306 ns/iter 5.977680600587789 ns/iter 1.00
Evaluator_Draft6_Property_Names 236.99774041279684 ns/iter 235.08239182720627 ns/iter 1.01
Evaluator_Draft7_If_Then_Else 26.977743312674363 ns/iter 27.31260910210215 ns/iter 0.99
Evaluator_Draft7_Vercel_1 89470.13769319636 ns/iter 89169.60165290453 ns/iter 1.00
Evaluator_2019_09_Unevaluated_Properties 152.89403828502083 ns/iter 163.72774868187525 ns/iter 0.93
Evaluator_2019_09_OMC_JSON_V2_1 6117.650467338155 ns/iter 6566.225769129676 ns/iter 0.93
Evaluator_2020_12_Dynamic_Ref 530.1036969702487 ns/iter 604.0006916682809 ns/iter 0.88

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: adaee93 Previous: 5ac082c Ratio
Compiler_Draft6_AdaptiveCard 57652871317.99999 ns/iter 58194363275 ns/iter 0.99
Compiler_2019_09_OMC_JSON_V2 11027072276.000013 ns/iter 10971707671.999979 ns/iter 1.01
Evaluator_Draft4_Meta_1_No_Callback 357.50414617604633 ns/iter 358.4707015626299 ns/iter 1.00
Evaluator_Draft4_Required_Properties 754.7278853494367 ns/iter 736.2555215733978 ns/iter 1.03
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 38.058155632444176 ns/iter 37.844120702938575 ns/iter 1.01
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 23.267803709308318 ns/iter 22.90110741765265 ns/iter 1.02
Evaluator_Draft4_Items_Schema 1037.2004721635828 ns/iter 1030.433701584994 ns/iter 1.01
Evaluator_Draft4_Nested_Object 4.344429898420581 ns/iter 4.351790577393873 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Optional 1279.8767960373632 ns/iter 1241.31838119533 ns/iter 1.03
Evaluator_Draft4_Properties_Triad_Closed 963.1895436342155 ns/iter 956.4552556159849 ns/iter 1.01
Evaluator_Draft4_Properties_Triad_Required 1278.8507693898478 ns/iter 1332.4939287794823 ns/iter 0.96
Evaluator_Draft4_Properties_Closed 145.29031343804752 ns/iter 134.33015055995995 ns/iter 1.08
Evaluator_Draft4_Non_Recursive_Ref 30.314831734964923 ns/iter 29.079505627318074 ns/iter 1.04
Evaluator_Draft4_Pattern_Properties_True 1969.170739764841 ns/iter 1922.015640238917 ns/iter 1.02
Evaluator_Draft4_Ref_To_Single_Property 22.923754238322797 ns/iter 23.626198200365188 ns/iter 0.97
Evaluator_Draft4_Additional_Properties_Type 53.60156245703704 ns/iter 57.146182840069216 ns/iter 0.94
Evaluator_Draft4_Nested_Oneof 128.2848869602307 ns/iter 128.21578977201636 ns/iter 1.00
Evaluator_Draft4_Long_Enum 22.186095970123667 ns/iter 23.288498796961242 ns/iter 0.95
Evaluator_Draft4_Type_Object 11.140725400427595 ns/iter 12.373635660028045 ns/iter 0.90
Evaluator_Draft6_Property_Names 472.67792230247613 ns/iter 488.582081158612 ns/iter 0.97
Evaluator_Draft7_If_Then_Else 56.89944941821005 ns/iter 56.32080948742372 ns/iter 1.01
Evaluator_Draft7_Vercel_1 120995.00132891258 ns/iter 116840.53864446316 ns/iter 1.04
Evaluator_2019_09_Unevaluated_Properties 204.6211156036502 ns/iter 207.26034919034657 ns/iter 0.99
Evaluator_2019_09_OMC_JSON_V2_1 8684.573562443304 ns/iter 8577.160246457035 ns/iter 1.01
Evaluator_2020_12_Dynamic_Ref 863.3546673078487 ns/iter 882.4988597397271 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: adaee93 Previous: 5ac082c Ratio
Evaluator_2020_12_Dynamic_Ref 847.2848007477164 ns/iter 839.5887455195406 ns/iter 1.01
Evaluator_2019_09_Unevaluated_Properties 274.50731850711884 ns/iter 262.7649860740528 ns/iter 1.04
Evaluator_2019_09_OMC_JSON_V2_1 11485.870674806265 ns/iter 11364.13705914836 ns/iter 1.01
Evaluator_Draft7_If_Then_Else 51.18175369217956 ns/iter 49.910016504678765 ns/iter 1.03
Evaluator_Draft7_Vercel_1 139549.8603420104 ns/iter 140243.95913936786 ns/iter 1.00
Evaluator_Draft6_Property_Names 1130.4895294687858 ns/iter 1123.7566917944625 ns/iter 1.01
Evaluator_Draft4_Meta_1_No_Callback 421.32618598417446 ns/iter 422.45913533913483 ns/iter 1.00
Evaluator_Draft4_Required_Properties 1696.1646701661982 ns/iter 1692.9438504931375 ns/iter 1.00
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 37.20277278796409 ns/iter 37.19900200791472 ns/iter 1.00
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 32.20683767634532 ns/iter 32.531881759206975 ns/iter 0.99
Evaluator_Draft4_Items_Schema 922.5836244150279 ns/iter 867.8376101994783 ns/iter 1.06
Evaluator_Draft4_Nested_Object 3.485878566589536 ns/iter 3.519438969155795 ns/iter 0.99
Evaluator_Draft4_Properties_Triad_Optional 1353.0499874700274 ns/iter 1284.1030824435256 ns/iter 1.05
Evaluator_Draft4_Properties_Triad_Closed 1015.3110698609834 ns/iter 1005.2736566825864 ns/iter 1.01
Evaluator_Draft4_Properties_Triad_Required 1346.2217971571688 ns/iter 1340.9292765363268 ns/iter 1.00
Evaluator_Draft4_Properties_Closed 194.52780876886982 ns/iter 192.03981827606248 ns/iter 1.01
Evaluator_Draft4_Non_Recursive_Ref 61.27264000530295 ns/iter 48.73899220693154 ns/iter 1.26
Evaluator_Draft4_Pattern_Properties_True 2041.5967606435217 ns/iter 1999.9765300457689 ns/iter 1.02
Evaluator_Draft4_Ref_To_Single_Property 36.348777007060264 ns/iter 36.13022105766133 ns/iter 1.01
Evaluator_Draft4_Additional_Properties_Type 102.71730085345656 ns/iter 103.13641320218977 ns/iter 1.00
Evaluator_Draft4_Nested_Oneof 107.56860949906402 ns/iter 108.68762479805783 ns/iter 0.99
Evaluator_Draft4_Long_Enum 20.260972326179377 ns/iter 19.463572349943334 ns/iter 1.04
Evaluator_Draft4_Type_Object 10.031622066639684 ns/iter 10.01003480304726 ns/iter 1.00
Compiler_2019_09_OMC_JSON_V2 11415883832.999952 ns/iter 11450872863.999962 ns/iter 1.00
Compiler_Draft6_AdaptiveCard 66072592699.00004 ns/iter 66302825805 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 (macos/gcc)

Benchmark suite Current: adaee93 Previous: 5ac082c Ratio
Compiler_Draft6_AdaptiveCard 45641534090.042114 ns/iter 44932435035.70557 ns/iter 1.02
Compiler_2019_09_OMC_JSON_V2 8629986047.744751 ns/iter 8311514854.431152 ns/iter 1.04
Evaluator_Draft4_Meta_1_No_Callback 264.1759714610837 ns/iter 252.40881286215193 ns/iter 1.05
Evaluator_Draft4_Required_Properties 455.86520468302075 ns/iter 496.7436180078031 ns/iter 0.92
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 22.61769029920375 ns/iter 24.309309292207242 ns/iter 0.93
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 14.242280848243759 ns/iter 14.4569399347899 ns/iter 0.99
Evaluator_Draft4_Items_Schema 698.1648393970727 ns/iter 675.5852527961464 ns/iter 1.03
Evaluator_Draft4_Nested_Object 2.103659832989498 ns/iter 2.0998590653351146 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Optional 1106.8487969500154 ns/iter 1120.4334900039166 ns/iter 0.99
Evaluator_Draft4_Properties_Triad_Closed 835.0707123268653 ns/iter 885.1876654269454 ns/iter 0.94
Evaluator_Draft4_Properties_Triad_Required 1036.9891537028639 ns/iter 1138.9467884675068 ns/iter 0.91
Evaluator_Draft4_Properties_Closed 97.88812599811506 ns/iter 100.18673314570735 ns/iter 0.98
Evaluator_Draft4_Non_Recursive_Ref 20.358896792735194 ns/iter 19.099099588181026 ns/iter 1.07
Evaluator_Draft4_Pattern_Properties_True 1650.7284526574626 ns/iter 1627.161727644533 ns/iter 1.01
Evaluator_Draft4_Ref_To_Single_Property 13.66432189685626 ns/iter 13.784516004269802 ns/iter 0.99
Evaluator_Draft4_Additional_Properties_Type 34.577553113555396 ns/iter 37.7394045323319 ns/iter 0.92
Evaluator_Draft4_Nested_Oneof 78.84217969577536 ns/iter 79.58697992715484 ns/iter 0.99
Evaluator_Draft4_Long_Enum 11.21269596928452 ns/iter 11.436873917845379 ns/iter 0.98
Evaluator_Draft4_Type_Object 6.109370676823706 ns/iter 6.2019131383919 ns/iter 0.99
Evaluator_Draft6_Property_Names 354.92052720118005 ns/iter 363.9251757731967 ns/iter 0.98
Evaluator_Draft7_If_Then_Else 30.024988224411562 ns/iter 30.631568788316947 ns/iter 0.98
Evaluator_Draft7_Vercel_1 92665.41577981092 ns/iter 99001.57799025971 ns/iter 0.94
Evaluator_2019_09_Unevaluated_Properties 159.24861394868012 ns/iter 161.5038131060082 ns/iter 0.99
Evaluator_2019_09_OMC_JSON_V2_1 6179.649750946973 ns/iter 5996.12330400908 ns/iter 1.03
Evaluator_2020_12_Dynamic_Ref 614.1555199822022 ns/iter 598.7617593540693 ns/iter 1.03

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: adaee93 Previous: 5ac082c Ratio
Compiler_Draft6_AdaptiveCard 117640656899.99995 ns/iter 116676180499.99998 ns/iter 1.01
Compiler_2019_09_OMC_JSON_V2 25486013099.999924 ns/iter 25444581100.00005 ns/iter 1.00
Evaluator_Draft4_Meta_1_No_Callback 442.3895734671008 ns/iter 438.2489830584446 ns/iter 1.01
Evaluator_Draft4_Required_Properties 743.4343750000342 ns/iter 733.5908482143541 ns/iter 1.01
Evaluator_Draft4_Many_Optional_Properties_Minimal_Match 35.400680789724746 ns/iter 41.83174986573753 ns/iter 0.85
Evaluator_Draft4_Few_Optional_Properties_Minimal_Match 22.07333011078806 ns/iter 21.42695625000357 ns/iter 1.03
Evaluator_Draft4_Items_Schema 848.5212283386517 ns/iter 845.1539062500148 ns/iter 1.00
Evaluator_Draft4_Nested_Object 4.029932105410675 ns/iter 4.0296696428564 ns/iter 1.00
Evaluator_Draft4_Properties_Triad_Optional 5427.94200000003 ns/iter 4292.2694454162365 ns/iter 1.26
Evaluator_Draft4_Properties_Triad_Closed 4563.610235430992 ns/iter 3411.6536119591474 ns/iter 1.34
Evaluator_Draft4_Properties_Triad_Required 5482.686000000285 ns/iter 4316.339211455084 ns/iter 1.27
Evaluator_Draft4_Properties_Closed 140.77976157233417 ns/iter 141.965390983725 ns/iter 0.99
Evaluator_Draft4_Non_Recursive_Ref 15.457008928570255 ns/iter 15.397171875000431 ns/iter 1.00
Evaluator_Draft4_Pattern_Properties_True 14266.248141749807 ns/iter 7042.800223214637 ns/iter 2.03
Evaluator_Draft4_Ref_To_Single_Property 29.78798417079383 ns/iter 31.10258035714456 ns/iter 0.96
Evaluator_Draft4_Additional_Properties_Type 31.972691964285666 ns/iter 29.458928571425446 ns/iter 1.09
Evaluator_Draft4_Nested_Oneof 137.2140340529328 ns/iter 135.47855357143948 ns/iter 1.01
Evaluator_Draft4_Long_Enum 20.88284374999816 ns/iter 20.90745937499605 ns/iter 1.00
Evaluator_Draft4_Type_Object 9.60996290352708 ns/iter 9.608927635675498 ns/iter 1.00
Evaluator_Draft6_Property_Names 533.6703571428204 ns/iter 515.8950892858829 ns/iter 1.03
Evaluator_Draft7_If_Then_Else 48.943950000000314 ns/iter 48.38376172958441 ns/iter 1.01
Evaluator_Draft7_Vercel_1 136896.8260345443 ns/iter 135594.01366012477 ns/iter 1.01
Evaluator_2019_09_Unevaluated_Properties 762.8877232142323 ns/iter 436.2473124999156 ns/iter 1.75
Evaluator_2019_09_OMC_JSON_V2_1 10174.234374996871 ns/iter 9920.391873252483 ns/iter 1.03
Evaluator_2020_12_Dynamic_Ref 1390.296879331556 ns/iter 1374.114163341947 ns/iter 1.01

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

Please sign in to comment.