Skip to content

Commit

Permalink
Mark in-place applicators with special rules as ApplicatorValueOther (
Browse files Browse the repository at this point in the history
#1405)

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
  • Loading branch information
jviotti authored Dec 24, 2024
1 parent 8e60c8b commit 1ea4479
Show file tree
Hide file tree
Showing 8 changed files with 26 additions and 20 deletions.
20 changes: 10 additions & 10 deletions src/jsonschema/default_walker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -37,12 +37,12 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
ApplicatorElementsInPlace)
WALK(HTTPS_BASE "2020-12/vocab/applicator", "allOf",
ApplicatorElementsInPlace)
WALK(HTTPS_BASE "2020-12/vocab/applicator", "if", ApplicatorValueInPlace)
WALK(HTTPS_BASE "2020-12/vocab/applicator", "if", ApplicatorValueOther)
WALK(HTTPS_BASE "2020-12/vocab/applicator", "then", ApplicatorValueInPlace,
"if")
WALK(HTTPS_BASE "2020-12/vocab/applicator", "else", ApplicatorValueInPlace,
"if")
WALK(HTTPS_BASE "2020-12/vocab/applicator", "not", ApplicatorValueInPlace)
WALK(HTTPS_BASE "2020-12/vocab/applicator", "not", ApplicatorValueOther)
// For the purpose of compiler optimizations
WALK_MAYBE_DEPENDENT(HTTPS_BASE "2020-12/vocab/applicator", "properties",
ApplicatorMembers, HTTPS_BASE "2020-12/vocab/validation",
Expand Down Expand Up @@ -100,7 +100,7 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
HTTPS_BASE "2020-12/vocab/applicator", "prefixItems",
"items", "contains")
WALK(HTTPS_BASE "2020-12/vocab/content", "contentSchema",
ApplicatorValueInPlace)
ApplicatorValueOther)
WALK(HTTPS_BASE "2020-12/vocab/content", "contentMediaType", Annotation)
WALK(HTTPS_BASE "2020-12/vocab/content", "contentEncoding", Annotation)
WALK(HTTPS_BASE "2020-12/vocab/format-assertion", "format", Assertion)
Expand All @@ -124,12 +124,12 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
ApplicatorElementsInPlace)
WALK(HTTPS_BASE "2019-09/vocab/applicator", "oneOf",
ApplicatorElementsInPlace)
WALK(HTTPS_BASE "2019-09/vocab/applicator", "if", ApplicatorValueInPlace)
WALK(HTTPS_BASE "2019-09/vocab/applicator", "if", ApplicatorValueOther)
WALK(HTTPS_BASE "2019-09/vocab/applicator", "then", ApplicatorValueInPlace,
"if")
WALK(HTTPS_BASE "2019-09/vocab/applicator", "else", ApplicatorValueInPlace,
"if")
WALK(HTTPS_BASE "2019-09/vocab/applicator", "not", ApplicatorValueInPlace)
WALK(HTTPS_BASE "2019-09/vocab/applicator", "not", ApplicatorValueOther)
// For the purpose of compiler optimizations
WALK_MAYBE_DEPENDENT(HTTPS_BASE "2019-09/vocab/applicator", "properties",
ApplicatorMembers, HTTPS_BASE "2019-09/vocab/validation",
Expand Down Expand Up @@ -185,7 +185,7 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
WALK(HTTPS_BASE "2019-09/vocab/meta-data", "default", Annotation)
WALK(HTTPS_BASE "2019-09/vocab/format", "format", Annotation)
WALK(HTTPS_BASE "2019-09/vocab/content", "contentSchema",
ApplicatorValueInPlace)
ApplicatorValueOther)
WALK(HTTPS_BASE "2019-09/vocab/content", "contentMediaType", Annotation)
WALK(HTTPS_BASE "2019-09/vocab/content", "contentEncoding", Annotation)
WALK(HTTPS_BASE "2019-09/vocab/hyper-schema", "hrefSchema", ApplicatorValue)
Expand Down Expand Up @@ -234,13 +234,13 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
WALK(HTTP_BASE "draft-07/schema#", "dependencies", ApplicatorMembers, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "propertyNames", ApplicatorValueInPlace,
"$ref")
WALK(HTTP_BASE "draft-07/schema#", "if", ApplicatorValueInPlace, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "if", ApplicatorValueOther, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "then", ApplicatorValueInPlace, "if")
WALK(HTTP_BASE "draft-07/schema#", "else", ApplicatorValueInPlace, "if")
WALK(HTTP_BASE "draft-07/schema#", "allOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "anyOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "oneOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "not", ApplicatorValueInPlace, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "not", ApplicatorValueOther, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "format", Other, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "contentEncoding", Other, "$ref")
WALK(HTTP_BASE "draft-07/schema#", "contentMediaType", Other, "$ref")
Expand Down Expand Up @@ -308,7 +308,7 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
WALK(HTTP_BASE "draft-06/schema#", "allOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "anyOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "oneOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "not", ApplicatorValueInPlace, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "not", ApplicatorValueOther, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "format", Other, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "contentEncoding", Other, "$ref")
WALK(HTTP_BASE "draft-06/schema#", "contentMediaType", Other, "$ref")
Expand Down Expand Up @@ -369,7 +369,7 @@ auto sourcemeta::jsontoolkit::default_schema_walker(
WALK(HTTP_BASE "draft-04/schema#", "allOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "anyOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "oneOf", ApplicatorElementsInPlace, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "not", ApplicatorValueInPlace, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "not", ApplicatorValueOther, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "format", Other, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "definitions", LocationMembers, "$ref")
WALK(HTTP_BASE "draft-04/schema#", "title", Other, "$ref")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,10 @@ enum class SchemaWalkerStrategy : std::uint8_t {
/// takes a JSON Schema definition as an argument
ApplicatorValue,
/// The JSON Schema keyword is an applicator that potentially
/// takes a JSON Schema definition as an argument but its evaluation follows
/// special rules
ApplicatorValueOther,
/// The JSON Schema keyword is an applicator that potentially
/// takes a JSON Schema definition as an argument without affecting the
/// instance location
ApplicatorValueInPlace,
Expand Down
2 changes: 2 additions & 0 deletions src/jsonschema/walker.cc
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ auto walk(sourcemeta::jsontoolkit::Pointer &pointer,
switch (walker(pair.first, vocabularies).strategy) {
case sourcemeta::jsontoolkit::SchemaWalkerStrategy::ApplicatorValue:
[[fallthrough]];
case sourcemeta::jsontoolkit::SchemaWalkerStrategy::ApplicatorValueOther:
[[fallthrough]];
case sourcemeta::jsontoolkit::SchemaWalkerStrategy::
ApplicatorValueInPlace: {
sourcemeta::jsontoolkit::Pointer new_pointer{pointer};
Expand Down
6 changes: 3 additions & 3 deletions test/jsonschema/jsonschema_default_walker_2019_09_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ TEST(JSONSchema_default_walker_2019_09, applicator_not) {
using namespace sourcemeta::jsontoolkit;
const auto result{
default_schema_walker("not", VOCABULARIES_2019_09_APPLICATOR)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"https://json-schema.org/draft/2019-09/vocab/applicator");
Expand All @@ -174,7 +174,7 @@ TEST(JSONSchema_default_walker_2019_09, applicator_if) {
using namespace sourcemeta::jsontoolkit;
const auto result{
default_schema_walker("if", VOCABULARIES_2019_09_APPLICATOR)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"https://json-schema.org/draft/2019-09/vocab/applicator");
Expand Down Expand Up @@ -597,7 +597,7 @@ TEST(JSONSchema_default_walker_2019_09, content_contentSchema) {
using namespace sourcemeta::jsontoolkit;
const auto result{
default_schema_walker("contentSchema", VOCABULARIES_2019_09_CONTENT)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"https://json-schema.org/draft/2019-09/vocab/content");
Expand Down
6 changes: 3 additions & 3 deletions test/jsonschema/jsonschema_default_walker_2020_12_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@ TEST(JSONSchema_default_walker_2020_12, applicator_not) {
using namespace sourcemeta::jsontoolkit;
const auto result{
default_schema_walker("not", VOCABULARIES_2020_12_APPLICATOR)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"https://json-schema.org/draft/2020-12/vocab/applicator");
Expand All @@ -182,7 +182,7 @@ TEST(JSONSchema_default_walker_2020_12, applicator_if) {
using namespace sourcemeta::jsontoolkit;
const auto result{
default_schema_walker("if", VOCABULARIES_2020_12_APPLICATOR)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"https://json-schema.org/draft/2020-12/vocab/applicator");
Expand Down Expand Up @@ -654,7 +654,7 @@ TEST(JSONSchema_default_walker_2020_12, content_contentSchema) {
using namespace sourcemeta::jsontoolkit;
const auto result{
default_schema_walker("contentSchema", VOCABULARIES_2020_12_CONTENT)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"https://json-schema.org/draft/2020-12/vocab/content");
Expand Down
2 changes: 1 addition & 1 deletion test/jsonschema/jsonschema_default_walker_draft4_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ TEST(JSONSchema_default_walker_draft4, oneOf) {
TEST(JSONSchema_default_walker_draft4, not) {
using namespace sourcemeta::jsontoolkit;
const auto result{default_schema_walker("not", VOCABULARIES_DRAFT4)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"http://json-schema.org/draft-04/schema#");
Expand Down
2 changes: 1 addition & 1 deletion test/jsonschema/jsonschema_default_walker_draft6_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ TEST(JSONSchema_default_walker_draft6, oneOf) {
TEST(JSONSchema_default_walker_draft6, not) {
using namespace sourcemeta::jsontoolkit;
const auto result{default_schema_walker("not", VOCABULARIES_DRAFT6)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"http://json-schema.org/draft-06/schema#");
Expand Down
4 changes: 2 additions & 2 deletions test/jsonschema/jsonschema_default_walker_draft7_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ TEST(JSONSchema_default_walker_draft7, oneOf) {
TEST(JSONSchema_default_walker_draft7, not) {
using namespace sourcemeta::jsontoolkit;
const auto result{default_schema_walker("not", VOCABULARIES_DRAFT7)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"http://json-schema.org/draft-07/schema#");
Expand All @@ -108,7 +108,7 @@ TEST(JSONSchema_default_walker_draft7, not) {
TEST(JSONSchema_default_walker_draft7, if) {
using namespace sourcemeta::jsontoolkit;
const auto result{default_schema_walker("if", VOCABULARIES_DRAFT7)};
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueInPlace);
EXPECT_EQ(result.strategy, SchemaWalkerStrategy::ApplicatorValueOther);
EXPECT_TRUE(result.vocabulary.has_value());
EXPECT_EQ(result.vocabulary.value(),
"http://json-schema.org/draft-07/schema#");
Expand Down

4 comments on commit 1ea4479

@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: 1ea4479 Previous: 8e60c8b Ratio
JSON_Array_Of_Objects_Unique 359.76244320880716 ns/iter 334.0048747933947 ns/iter 1.08
JSON_Parse_1 23113.124645320444 ns/iter 22206.94703115784 ns/iter 1.04
JSON_Fast_Hash_Helm_Chart_Lock 51.30766477531438 ns/iter 47.819559542197496 ns/iter 1.07
JSON_Equality_Helm_Chart_Lock 150.10377021788509 ns/iter 136.94736642429524 ns/iter 1.10
Regex_Lower_S_Or_Upper_S_Asterisk 1.6907294629354317 ns/iter 1.568049416429879 ns/iter 1.08
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.688824749380999 ns/iter 1.5692212701077837 ns/iter 1.08
Regex_Period_Asterisk 1.6905291643400253 ns/iter 1.5674280750745855 ns/iter 1.08
Regex_Group_Period_Asterisk_Group 1.705899661571516 ns/iter 1.5716681387755036 ns/iter 1.09
Regex_Period_Plus 2.0337025088755967 ns/iter 1.8793554252464455 ns/iter 1.08
Regex_Period 2.099772148977997 ns/iter 1.8907756693286428 ns/iter 1.11
Regex_Caret_Period_Plus_Dollar 2.0217947770711757 ns/iter 1.9003737613029605 ns/iter 1.06
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0169472571864087 ns/iter 1.9659062842196229 ns/iter 1.03
Regex_Caret_Period_Asterisk_Dollar 1.685502303685264 ns/iter 1.6238425362955005 ns/iter 1.04
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.6707285947049966 ns/iter 1.5922933888968365 ns/iter 1.05
Regex_Caret_X_Hyphen 7.5064500164637336 ns/iter 6.26467843501741 ns/iter 1.20
Regex_Period_Md_Dollar 73.18896752678793 ns/iter 67.62446608424563 ns/iter 1.08
Regex_Caret_Slash_Period_Asterisk 7.358282375276036 ns/iter 4.799376616978944 ns/iter 1.53
Regex_Caret_Period_Range_Dollar 2.282925864390097 ns/iter 2.037534097426627 ns/iter 1.12
Regex_Nested_Backtrack 754.7273749020824 ns/iter 735.9499187290339 ns/iter 1.03
Pointer_Object_Traverse 16.218640199061348 ns/iter 14.762765926492822 ns/iter 1.10
Pointer_Object_Try_Traverse 34.11320376205183 ns/iter 31.501141610237376 ns/iter 1.08
Pointer_Push_Back_Pointer_To_Weak_Pointer 192.04871136590396 ns/iter 175.16131278016772 ns/iter 1.10

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: 1ea4479 Previous: 8e60c8b Ratio
JSON_Array_Of_Objects_Unique 442.81736426850995 ns/iter 443.8846128520479 ns/iter 1.00
JSON_Parse_1 30764.916387220983 ns/iter 30295.28470506587 ns/iter 1.02
JSON_Fast_Hash_Helm_Chart_Lock 54.69745862545952 ns/iter 54.68085755284186 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 152.35161281774862 ns/iter 149.63030954204575 ns/iter 1.02
Regex_Lower_S_Or_Upper_S_Asterisk 2.488570559154655 ns/iter 2.2066009791852026 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1855181614602786 ns/iter 2.266619971558102 ns/iter 0.96
Regex_Period_Asterisk 2.487150508783712 ns/iter 2.194919390109267 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 2.1879645954394853 ns/iter 2.188462305288205 ns/iter 1.00
Regex_Period_Plus 2.795603159012181 ns/iter 2.4873091913683893 ns/iter 1.12
Regex_Period 2.486553233220265 ns/iter 2.4873691621272056 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.492308373203322 ns/iter 2.487682639471656 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.493313078778737 ns/iter 2.3111831246096197 ns/iter 1.08
Regex_Caret_Period_Asterisk_Dollar 3.4172529357472214 ns/iter 2.4876186414232246 ns/iter 1.37
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.419328373155618 ns/iter 2.4862727781865455 ns/iter 1.38
Regex_Caret_X_Hyphen 12.479967390250412 ns/iter 13.050043371299582 ns/iter 0.96
Regex_Period_Md_Dollar 73.82566369583574 ns/iter 74.63292893310485 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 7.146515637771949 ns/iter 6.2199471767005745 ns/iter 1.15
Regex_Caret_Period_Range_Dollar 3.730929269482353 ns/iter 3.72616498657472 ns/iter 1.00
Regex_Nested_Backtrack 515.9747834232439 ns/iter 492.6023592562248 ns/iter 1.05
Pointer_Object_Traverse 44.85174895666773 ns/iter 45.043978090562995 ns/iter 1.00
Pointer_Object_Try_Traverse 52.33287206644017 ns/iter 52.25831875253182 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 352.1869668807298 ns/iter 351.89407746365566 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 (windows/msvc)

Benchmark suite Current: 1ea4479 Previous: 8e60c8b Ratio
JSON_Array_Of_Objects_Unique 417.89693670109006 ns/iter 415.0628207560955 ns/iter 1.01
JSON_Parse_1 80989.92187500288 ns/iter 79644.70982143114 ns/iter 1.02
JSON_Fast_Hash_Helm_Chart_Lock 53.30177000000731 ns/iter 53.94658000000163 ns/iter 0.99
JSON_Equality_Helm_Chart_Lock 217.0421250000487 ns/iter 219.63156608789353 ns/iter 0.99
Regex_Lower_S_Or_Upper_S_Asterisk 8.301164695082763 ns/iter 8.355697730556907 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 8.155415588592826 ns/iter 8.090141741072491 ns/iter 1.01
Regex_Period_Asterisk 7.77766294642847 ns/iter 8.30289174107181 ns/iter 0.94
Regex_Group_Period_Asterisk_Group 7.7568303571418085 ns/iter 7.876170758928578 ns/iter 0.98
Regex_Period_Plus 7.800021393748724 ns/iter 8.044601749800371 ns/iter 0.97
Regex_Period 7.8153093401107965 ns/iter 8.06613504464236 ns/iter 0.97
Regex_Caret_Period_Plus_Dollar 7.8744665178577735 ns/iter 8.118054874475044 ns/iter 0.97
Regex_Caret_Group_Period_Plus_Group_Dollar 8.139824963661136 ns/iter 8.106586570953164 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 7.958432107326218 ns/iter 7.819620500806067 ns/iter 1.02
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.975949964392321 ns/iter 7.836523437500124 ns/iter 1.02
Regex_Caret_X_Hyphen 11.91582031250249 ns/iter 11.637526785713298 ns/iter 1.02
Regex_Period_Md_Dollar 142.40773694608373 ns/iter 141.28333967483545 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 11.591051785716543 ns/iter 11.702973214283928 ns/iter 0.99
Regex_Caret_Period_Range_Dollar 8.799556249996954 ns/iter 9.18114999999986 ns/iter 0.96
Regex_Nested_Backtrack 591.9568750000183 ns/iter 588.5866964287549 ns/iter 1.01
Pointer_Object_Traverse 56.283089285723726 ns/iter 55.909285714282724 ns/iter 1.01
Pointer_Object_Try_Traverse 75.900937500007 ns/iter 75.5830915178533 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 178.33552485137176 ns/iter 175.00090234380963 ns/iter 1.02

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: 1ea4479 Previous: 8e60c8b Ratio
Pointer_Object_Traverse 43.895486171884464 ns/iter 46.09613872671311 ns/iter 0.95
Pointer_Object_Try_Traverse 22.411089672349124 ns/iter 22.46732424517253 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 212.9559994531304 ns/iter 213.29006133055077 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 2.4865469300505727 ns/iter 2.487498845090884 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.4867383706527986 ns/iter 2.4892672682644856 ns/iter 1.00
Regex_Period_Asterisk 2.4871306075413724 ns/iter 2.4882338179537236 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.488480668914569 ns/iter 2.488417506436234 ns/iter 1.00
Regex_Period_Plus 2.798123003797434 ns/iter 2.797667702316193 ns/iter 1.00
Regex_Period 2.7972198294681383 ns/iter 2.803504455317331 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.7980557677795947 ns/iter 2.7979738060905768 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.5015194343339506 ns/iter 2.8003464396171514 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 2.7991540700908826 ns/iter 3.732406658428591 ns/iter 0.75
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.799311558466373 ns/iter 3.729700543472691 ns/iter 0.75
Regex_Caret_X_Hyphen 12.430863325654391 ns/iter 13.055414866615436 ns/iter 0.95
Regex_Period_Md_Dollar 89.16672736796649 ns/iter 88.27876647295834 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 7.150062494612852 ns/iter 7.151539374636085 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 4.043079662654724 ns/iter 4.042425983761726 ns/iter 1.00
Regex_Nested_Backtrack 813.907326885112 ns/iter 813.5116573484303 ns/iter 1.00
JSON_Array_Of_Objects_Unique 379.586795534607 ns/iter 378.96437812283585 ns/iter 1.00
JSON_Parse_1 33024.28481907326 ns/iter 32963.44451706177 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 63.31024393044138 ns/iter 62.825596554458485 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 142.90688514176452 ns/iter 143.1913140227064 ns/iter 1.00

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

Please sign in to comment.