Skip to content

Commit

Permalink
Ensure FlatFileSchemaResolver enforces relative references (#1425)
Browse files Browse the repository at this point in the history
Signed-off-by: Juan Cruz Viotti <[email protected]>
  • Loading branch information
jviotti authored Jan 7, 2025
1 parent 08ea8d9 commit 0073e1e
Show file tree
Hide file tree
Showing 4 changed files with 38 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -145,6 +145,7 @@ class SOURCEMETA_JSONTOOLKIT_JSONSCHEMA_EXPORT FlatFileSchemaResolver {
struct Entry {
std::filesystem::path path;
std::optional<std::string> default_dialect;
std::string original_identifier;
};

private:
Expand Down
13 changes: 11 additions & 2 deletions src/jsonschema/resolver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,9 @@ auto FlatFileSchemaResolver::add(
throw SchemaError(error.str());
}

const auto result{this->schemas.emplace(identifier.value(),
Entry{canonical, default_dialect})};
const auto result{this->schemas.emplace(
identifier.value(),
Entry{canonical, default_dialect, identifier.value()})};
if (!result.second && result.first->second.path != canonical) {
std::ostringstream error;
error << "Cannot register the same identifier twice: "
Expand Down Expand Up @@ -128,6 +129,14 @@ auto FlatFileSchemaResolver::operator()(std::string_view identifier) const
schema.assign("$schema", JSON{result->second.default_dialect.value()});
}

sourcemeta::jsontoolkit::reidentify(schema,
result->second.original_identifier,
*this, result->second.default_dialect);
// Because we allow re-identification, we can get into issues unless we
// always try to relativize references
sourcemeta::jsontoolkit::relativize(schema, default_schema_walker, *this,
result->second.default_dialect,
result->second.original_identifier);
sourcemeta::jsontoolkit::reidentify(schema, result->first, *this,
result->second.default_dialect);

Expand Down
21 changes: 21 additions & 0 deletions test/jsonschema/jsonschema_flat_file_resolver_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -196,3 +196,24 @@ TEST(JSONSchema_FlatFileSchemaResolver, reidentify) {

EXPECT_EQ(resolver("https://example.com").value(), expected);
}

TEST(JSONSchema_FlatFileSchemaResolver, with_absolute_references) {
sourcemeta::jsontoolkit::FlatFileSchemaResolver resolver;
const auto schema_path{std::filesystem::path{SCHEMAS_PATH} /
"2020-12-absolute-ref.json"};

const sourcemeta::jsontoolkit::JSON expected =
sourcemeta::jsontoolkit::parse(R"JSON({
"$id": "https://www.sourcemeta.com/2020-12-absolute-ref.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$ref": "2020-12-id.json"
})JSON");

const auto &identifier{resolver.add(schema_path)};
EXPECT_EQ(identifier, "https://www.sourcemeta.com/2020-12-absolute-ref.json");
EXPECT_TRUE(resolver("https://www.sourcemeta.com/2020-12-absolute-ref.json")
.has_value());
EXPECT_EQ(
resolver("https://www.sourcemeta.com/2020-12-absolute-ref.json").value(),
expected);
}
5 changes: 5 additions & 0 deletions test/jsonschema/schemas/2020-12-absolute-ref.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"$id": "https://www.sourcemeta.com/2020-12-absolute-ref.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$ref": "https://www.sourcemeta.com/2020-12-id.json"
}

12 comments on commit 0073e1e

@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: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 341.3175933504588 ns/iter 363.1005432169859 ns/iter 0.94
JSON_Parse_1 23234.82308232652 ns/iter 29350.68247765509 ns/iter 0.79
JSON_Fast_Hash_Helm_Chart_Lock 53.19022616031996 ns/iter 55.44076688666669 ns/iter 0.96
JSON_Equality_Helm_Chart_Lock 145.32533008225676 ns/iter 159.97529624680226 ns/iter 0.91
Regex_Lower_S_Or_Upper_S_Asterisk 1.655322891906323 ns/iter 1.8258450555993455 ns/iter 0.91
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.6231488175813218 ns/iter 1.8632866279841254 ns/iter 0.87
Regex_Period_Asterisk 1.6654039837015808 ns/iter 1.9398793997879733 ns/iter 0.86
Regex_Group_Period_Asterisk_Group 1.6447989186058132 ns/iter 1.694898179660882 ns/iter 0.97
Regex_Period_Plus 2.141122048925417 ns/iter 2.1054609646761224 ns/iter 1.02
Regex_Period 2.063340242770744 ns/iter 2.159344542769177 ns/iter 0.96
Regex_Caret_Period_Plus_Dollar 1.9635421618434312 ns/iter 2.0020823116657884 ns/iter 0.98
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0533131102307727 ns/iter 2.225401451980401 ns/iter 0.92
Regex_Caret_Period_Asterisk_Dollar 1.7110303897120918 ns/iter 1.7861854657756169 ns/iter 0.96
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.7247934624931707 ns/iter 1.6737101808159158 ns/iter 1.03
Regex_Caret_X_Hyphen 6.787810687906736 ns/iter 6.630473399527316 ns/iter 1.02
Regex_Period_Md_Dollar 74.90325178751787 ns/iter 72.12473806286219 ns/iter 1.04
Regex_Caret_Slash_Period_Asterisk 6.587398413872851 ns/iter 6.215811336759792 ns/iter 1.06
Regex_Caret_Period_Range_Dollar 2.1627146781763673 ns/iter 2.442503672773014 ns/iter 0.89
Regex_Nested_Backtrack 815.0630129135978 ns/iter 778.1836685264979 ns/iter 1.05
Pointer_Object_Traverse 16.151748313901845 ns/iter 15.889012852370337 ns/iter 1.02
Pointer_Object_Try_Traverse 33.6707930918113 ns/iter 33.4104883926905 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 187.96220519611435 ns/iter 183.63642202813023 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/llvm)

Benchmark suite Current: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 443.80214544638204 ns/iter 448.99102806627013 ns/iter 0.99
JSON_Parse_1 30731.385109848597 ns/iter 29977.227723618562 ns/iter 1.03
JSON_Fast_Hash_Helm_Chart_Lock 54.69659215712777 ns/iter 54.68012567188576 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 146.75475589266034 ns/iter 149.48033985843307 ns/iter 0.98
Regex_Lower_S_Or_Upper_S_Asterisk 2.183731391914728 ns/iter 2.203977063137023 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.18732032688818 ns/iter 2.2104484593051104 ns/iter 0.99
Regex_Period_Asterisk 2.184520784270645 ns/iter 2.1991541543015054 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 2.184893090654348 ns/iter 2.1921508727627614 ns/iter 1.00
Regex_Period_Plus 2.4874809254660186 ns/iter 2.486290124674428 ns/iter 1.00
Regex_Period 2.488616513878734 ns/iter 2.4854984013104757 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.4870921130772885 ns/iter 2.4859983770520535 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.487127707218539 ns/iter 2.485744414467124 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 3.420856657971607 ns/iter 3.416262530572305 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.419395712179078 ns/iter 2.1950793354480327 ns/iter 1.56
Regex_Caret_X_Hyphen 12.485032621507766 ns/iter 13.048821086520212 ns/iter 0.96
Regex_Period_Md_Dollar 73.78178472870678 ns/iter 74.47197122949497 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 6.221862725782631 ns/iter 6.22303867854373 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 3.730885999631864 ns/iter 3.735530556719767 ns/iter 1.00
Regex_Nested_Backtrack 500.62069570993015 ns/iter 494.4804998267498 ns/iter 1.01
Pointer_Object_Traverse 45.44117952774766 ns/iter 44.78886507599523 ns/iter 1.01
Pointer_Object_Try_Traverse 52.31009211077645 ns/iter 52.65845835403999 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 352.5743262917365 ns/iter 352.25705860426945 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: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 415.41073455082574 ns/iter 418.99474403936665 ns/iter 0.99
JSON_Parse_1 80475.55803571019 ns/iter 79744.63640015424 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 55.01313999999411 ns/iter 54.36856000000034 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 220.00184374999066 ns/iter 217.9135058967219 ns/iter 1.01
Regex_Lower_S_Or_Upper_S_Asterisk 8.122800000000652 ns/iter 8.165690588545985 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 8.544790178572269 ns/iter 7.798883000898016 ns/iter 1.10
Regex_Period_Asterisk 7.988706473214893 ns/iter 7.785533482143693 ns/iter 1.03
Regex_Group_Period_Asterisk_Group 8.104978088817438 ns/iter 7.862993303571843 ns/iter 1.03
Regex_Period_Plus 8.150180803571264 ns/iter 7.837021840012947 ns/iter 1.04
Regex_Period 7.981718750000866 ns/iter 7.974022321428313 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 7.776783447425164 ns/iter 8.013027901786327 ns/iter 0.97
Regex_Caret_Group_Period_Plus_Group_Dollar 8.089691964286517 ns/iter 8.489150854958405 ns/iter 0.95
Regex_Caret_Period_Asterisk_Dollar 8.183283445610343 ns/iter 7.753978794643299 ns/iter 1.06
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.989862464331019 ns/iter 7.883224518378094 ns/iter 1.01
Regex_Caret_X_Hyphen 11.767530357143334 ns/iter 11.952732812499534 ns/iter 0.98
Regex_Period_Md_Dollar 143.53333957439517 ns/iter 143.64406250000985 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 11.771571428572054 ns/iter 11.67749062499901 ns/iter 1.01
Regex_Caret_Period_Range_Dollar 9.078646875000375 ns/iter 8.943330763645985 ns/iter 1.02
Regex_Nested_Backtrack 594.7922991071307 ns/iter 587.8857142856677 ns/iter 1.01
Pointer_Object_Traverse 56.63653999999951 ns/iter 56.08248214285944 ns/iter 1.01
Pointer_Object_Try_Traverse 76.07916294642334 ns/iter 75.84008035713907 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 181.27367689945447 ns/iter 189.7341865834237 ns/iter 0.96

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: 0073e1e Previous: 08ea8d9 Ratio
Pointer_Object_Traverse 44.702839121593165 ns/iter 52.11801719840574 ns/iter 0.86
Pointer_Object_Try_Traverse 22.494719726588045 ns/iter 22.414314528018476 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 213.6056737121783 ns/iter 213.50259850350199 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 3.160896379596395 ns/iter 2.4884240800170185 ns/iter 1.27
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.190184984297399 ns/iter 2.48587408908152 ns/iter 1.28
Regex_Period_Asterisk 3.156372787997582 ns/iter 2.488464289802073 ns/iter 1.27
Regex_Group_Period_Asterisk_Group 3.1881262207025647 ns/iter 2.5487888335876563 ns/iter 1.25
Regex_Period_Plus 3.174375417073702 ns/iter 2.4891424237451614 ns/iter 1.28
Regex_Period 3.185282552982109 ns/iter 2.5059946916387283 ns/iter 1.27
Regex_Caret_Period_Plus_Dollar 3.1698941103007026 ns/iter 2.486641705289204 ns/iter 1.27
Regex_Caret_Group_Period_Plus_Group_Dollar 3.208435561677113 ns/iter 2.4886072776807415 ns/iter 1.29
Regex_Caret_Period_Asterisk_Dollar 3.74138809828361 ns/iter 2.796502317947934 ns/iter 1.34
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.611537577954824 ns/iter 2.799954662955765 ns/iter 1.29
Regex_Caret_X_Hyphen 12.434301844044477 ns/iter 13.053280698598012 ns/iter 0.95
Regex_Period_Md_Dollar 91.6661635305046 ns/iter 89.43861262849947 ns/iter 1.02
Regex_Caret_Slash_Period_Asterisk 7.148166429622627 ns/iter 7.146004550915311 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 3.3028748472142273 ns/iter 4.038257818128988 ns/iter 0.82
Regex_Nested_Backtrack 812.8471054781755 ns/iter 817.2460596747886 ns/iter 0.99
JSON_Array_Of_Objects_Unique 378.25787106441635 ns/iter 376.77039072668566 ns/iter 1.00
JSON_Parse_1 32839.14564160615 ns/iter 32592.001259854707 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 62.79981264667162 ns/iter 62.46220682271089 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 143.33617165276232 ns/iter 148.6278505563362 ns/iter 0.96

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/llvm)

Benchmark suite Current: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 334.69429819383305 ns/iter 363.1005432169859 ns/iter 0.92
JSON_Parse_1 21584.05690484283 ns/iter 29350.68247765509 ns/iter 0.74
JSON_Fast_Hash_Helm_Chart_Lock 48.14268155138785 ns/iter 55.44076688666669 ns/iter 0.87
JSON_Equality_Helm_Chart_Lock 137.62218731820414 ns/iter 159.97529624680226 ns/iter 0.86
Regex_Lower_S_Or_Upper_S_Asterisk 1.5978340770977475 ns/iter 1.8258450555993455 ns/iter 0.88
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.7417298400692534 ns/iter 1.8632866279841254 ns/iter 0.93
Regex_Period_Asterisk 1.6011179434865164 ns/iter 1.9398793997879733 ns/iter 0.83
Regex_Group_Period_Asterisk_Group 1.6047596094519498 ns/iter 1.694898179660882 ns/iter 0.95
Regex_Period_Plus 1.9581694143186639 ns/iter 2.1054609646761224 ns/iter 0.93
Regex_Period 1.9441326046513339 ns/iter 2.159344542769177 ns/iter 0.90
Regex_Caret_Period_Plus_Dollar 1.891309115618976 ns/iter 2.0020823116657884 ns/iter 0.94
Regex_Caret_Group_Period_Plus_Group_Dollar 1.910645120473109 ns/iter 2.225401451980401 ns/iter 0.86
Regex_Caret_Period_Asterisk_Dollar 1.5944255703562227 ns/iter 1.7861854657756169 ns/iter 0.89
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.5714593924155849 ns/iter 1.6737101808159158 ns/iter 0.94
Regex_Caret_X_Hyphen 6.3464293586884875 ns/iter 6.630473399527316 ns/iter 0.96
Regex_Period_Md_Dollar 69.04757409174576 ns/iter 72.12473806286219 ns/iter 0.96
Regex_Caret_Slash_Period_Asterisk 6.526432715006652 ns/iter 6.215811336759792 ns/iter 1.05
Regex_Caret_Period_Range_Dollar 2.1977975665961784 ns/iter 2.442503672773014 ns/iter 0.90
Regex_Nested_Backtrack 792.9181125926366 ns/iter 778.1836685264979 ns/iter 1.02
Pointer_Object_Traverse 16.7203810469732 ns/iter 15.889012852370337 ns/iter 1.05
Pointer_Object_Try_Traverse 34.04478900656141 ns/iter 33.4104883926905 ns/iter 1.02
Pointer_Push_Back_Pointer_To_Weak_Pointer 219.34066436718467 ns/iter 183.63642202813023 ns/iter 1.19

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: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 447.0780878795638 ns/iter 448.99102806627013 ns/iter 1.00
JSON_Parse_1 30310.56582305931 ns/iter 29977.227723618562 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 54.69320627749643 ns/iter 54.68012567188576 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 149.33796994414018 ns/iter 149.48033985843307 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 2.48712687381477 ns/iter 2.203977063137023 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.204269525686273 ns/iter 2.2104484593051104 ns/iter 1.00
Regex_Period_Asterisk 2.486723246677095 ns/iter 2.1991541543015054 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 2.1901493434281827 ns/iter 2.1921508727627614 ns/iter 1.00
Regex_Period_Plus 2.816151355363943 ns/iter 2.486290124674428 ns/iter 1.13
Regex_Period 2.5780021525200216 ns/iter 2.4854984013104757 ns/iter 1.04
Regex_Caret_Period_Plus_Dollar 2.488454381316154 ns/iter 2.4859983770520535 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.4879990813058517 ns/iter 2.485744414467124 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 3.4171377844153077 ns/iter 3.416262530572305 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.4193111125148588 ns/iter 2.1950793354480327 ns/iter 1.56
Regex_Caret_X_Hyphen 13.049704466066927 ns/iter 13.048821086520212 ns/iter 1.00
Regex_Period_Md_Dollar 74.96560872910759 ns/iter 74.47197122949497 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 7.146887191216998 ns/iter 6.22303867854373 ns/iter 1.15
Regex_Caret_Period_Range_Dollar 3.9227605056602886 ns/iter 3.735530556719767 ns/iter 1.05
Regex_Nested_Backtrack 493.3581090548569 ns/iter 494.4804998267498 ns/iter 1.00
Pointer_Object_Traverse 44.85536106250463 ns/iter 44.78886507599523 ns/iter 1.00
Pointer_Object_Try_Traverse 53.54796868411854 ns/iter 52.65845835403999 ns/iter 1.02
Pointer_Push_Back_Pointer_To_Weak_Pointer 352.234486273208 ns/iter 352.25705860426945 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: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 417.3646187846917 ns/iter 418.99474403936665 ns/iter 1.00
JSON_Parse_1 79964.99263425487 ns/iter 79744.63640015424 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 54.65897999999925 ns/iter 54.36856000000034 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 220.13228124997397 ns/iter 217.9135058967219 ns/iter 1.01
Regex_Lower_S_Or_Upper_S_Asterisk 8.335989955356686 ns/iter 8.165690588545985 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 7.801408893742377 ns/iter 7.798883000898016 ns/iter 1.00
Regex_Period_Asterisk 7.866795500594816 ns/iter 7.785533482143693 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 7.905732553993233 ns/iter 7.862993303571843 ns/iter 1.01
Regex_Period_Plus 7.80473032230125 ns/iter 7.837021840012947 ns/iter 1.00
Regex_Period 7.937520089286007 ns/iter 7.974022321428313 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 7.899678571428989 ns/iter 8.013027901786327 ns/iter 0.99
Regex_Caret_Group_Period_Plus_Group_Dollar 8.214223624043791 ns/iter 8.489150854958405 ns/iter 0.97
Regex_Caret_Period_Asterisk_Dollar 7.818502197238647 ns/iter 7.753978794643299 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.903619419643095 ns/iter 7.883224518378094 ns/iter 1.00
Regex_Caret_X_Hyphen 11.7917374999994 ns/iter 11.952732812499534 ns/iter 0.99
Regex_Period_Md_Dollar 142.08783517466364 ns/iter 143.64406250000985 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 11.609105357142166 ns/iter 11.67749062499901 ns/iter 0.99
Regex_Caret_Period_Range_Dollar 8.91862897804222 ns/iter 8.943330763645985 ns/iter 1.00
Regex_Nested_Backtrack 601.5439000000242 ns/iter 587.8857142856677 ns/iter 1.02
Pointer_Object_Traverse 56.678517857144634 ns/iter 56.08248214285944 ns/iter 1.01
Pointer_Object_Try_Traverse 76.25406249999348 ns/iter 75.84008035713907 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 177.15086230923507 ns/iter 189.7341865834237 ns/iter 0.93

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: 0073e1e Previous: 08ea8d9 Ratio
Pointer_Object_Traverse 44.1597719965367 ns/iter 52.11801719840574 ns/iter 0.85
Pointer_Object_Try_Traverse 22.41112704196407 ns/iter 22.414314528018476 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 213.1850043747793 ns/iter 213.50259850350199 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 3.1294608803893227 ns/iter 2.4884240800170185 ns/iter 1.26
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.1288715879419793 ns/iter 2.48587408908152 ns/iter 1.26
Regex_Period_Asterisk 3.1360836766022118 ns/iter 2.488464289802073 ns/iter 1.26
Regex_Group_Period_Asterisk_Group 3.123159656679897 ns/iter 2.5487888335876563 ns/iter 1.23
Regex_Period_Plus 3.1200034215861265 ns/iter 2.4891424237451614 ns/iter 1.25
Regex_Period 3.1208919230261656 ns/iter 2.5059946916387283 ns/iter 1.25
Regex_Caret_Period_Plus_Dollar 3.1209440792847203 ns/iter 2.486641705289204 ns/iter 1.26
Regex_Caret_Group_Period_Plus_Group_Dollar 3.1300341388326536 ns/iter 2.4886072776807415 ns/iter 1.26
Regex_Caret_Period_Asterisk_Dollar 3.1328120331376947 ns/iter 2.796502317947934 ns/iter 1.12
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.1335159242946498 ns/iter 2.799954662955765 ns/iter 1.12
Regex_Caret_X_Hyphen 12.428757469744316 ns/iter 13.053280698598012 ns/iter 0.95
Regex_Period_Md_Dollar 89.38812351064858 ns/iter 89.43861262849947 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.164057560791255 ns/iter 7.146004550915311 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 4.041889577789907 ns/iter 4.038257818128988 ns/iter 1.00
Regex_Nested_Backtrack 827.2535764927152 ns/iter 817.2460596747886 ns/iter 1.01
JSON_Array_Of_Objects_Unique 378.2992007611136 ns/iter 376.77039072668566 ns/iter 1.00
JSON_Parse_1 32836.02209530772 ns/iter 32592.001259854707 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 58.58758412215558 ns/iter 62.46220682271089 ns/iter 0.94
JSON_Equality_Helm_Chart_Lock 142.3386243686858 ns/iter 148.6278505563362 ns/iter 0.96

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: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 447.553015649162 ns/iter 448.99102806627013 ns/iter 1.00
JSON_Parse_1 30766.3516652752 ns/iter 29977.227723618562 ns/iter 1.03
JSON_Fast_Hash_Helm_Chart_Lock 54.81587290509493 ns/iter 54.68012567188576 ns/iter 1.00
JSON_Equality_Helm_Chart_Lock 148.14178326295576 ns/iter 149.48033985843307 ns/iter 0.99
Regex_Lower_S_Or_Upper_S_Asterisk 2.179695168788507 ns/iter 2.203977063137023 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1862986843110845 ns/iter 2.2104484593051104 ns/iter 0.99
Regex_Period_Asterisk 2.1816433487041254 ns/iter 2.1991541543015054 ns/iter 0.99
Regex_Group_Period_Asterisk_Group 2.1901473633619437 ns/iter 2.1921508727627614 ns/iter 1.00
Regex_Period_Plus 2.4940102070691643 ns/iter 2.486290124674428 ns/iter 1.00
Regex_Period 2.4882838756352914 ns/iter 2.4854984013104757 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 2.367286541466175 ns/iter 2.4859983770520535 ns/iter 0.95
Regex_Caret_Group_Period_Plus_Group_Dollar 2.208042396292504 ns/iter 2.485744414467124 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 2.485994972869138 ns/iter 3.416262530572305 ns/iter 0.73
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.4860867755670037 ns/iter 2.1950793354480327 ns/iter 1.13
Regex_Caret_X_Hyphen 12.510733126488876 ns/iter 13.048821086520212 ns/iter 0.96
Regex_Period_Md_Dollar 73.8455318493536 ns/iter 74.47197122949497 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 6.215310730401744 ns/iter 6.22303867854373 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 3.733294662602425 ns/iter 3.735530556719767 ns/iter 1.00
Regex_Nested_Backtrack 497.2641865095072 ns/iter 494.4804998267498 ns/iter 1.01
Pointer_Object_Traverse 44.90654261814661 ns/iter 44.78886507599523 ns/iter 1.00
Pointer_Object_Try_Traverse 52.33534789928957 ns/iter 52.65845835403999 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 352.10456363818497 ns/iter 352.25705860426945 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/llvm)

Benchmark suite Current: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 328.7903670380859 ns/iter 363.1005432169859 ns/iter 0.91
JSON_Parse_1 21916.720614074173 ns/iter 29350.68247765509 ns/iter 0.75
JSON_Fast_Hash_Helm_Chart_Lock 47.636528159604396 ns/iter 55.44076688666669 ns/iter 0.86
JSON_Equality_Helm_Chart_Lock 139.46101803267734 ns/iter 159.97529624680226 ns/iter 0.87
Regex_Lower_S_Or_Upper_S_Asterisk 1.578084369345146 ns/iter 1.8258450555993455 ns/iter 0.86
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.5884499516627602 ns/iter 1.8632866279841254 ns/iter 0.85
Regex_Period_Asterisk 1.5683639254267756 ns/iter 1.9398793997879733 ns/iter 0.81
Regex_Group_Period_Asterisk_Group 1.5816775133335133 ns/iter 1.694898179660882 ns/iter 0.93
Regex_Period_Plus 1.8936833934118584 ns/iter 2.1054609646761224 ns/iter 0.90
Regex_Period 1.9050374904958878 ns/iter 2.159344542769177 ns/iter 0.88
Regex_Caret_Period_Plus_Dollar 1.8795479832337871 ns/iter 2.0020823116657884 ns/iter 0.94
Regex_Caret_Group_Period_Plus_Group_Dollar 1.8905998351084419 ns/iter 2.225401451980401 ns/iter 0.85
Regex_Caret_Period_Asterisk_Dollar 1.595753048787598 ns/iter 1.7861854657756169 ns/iter 0.89
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.5853825491678541 ns/iter 1.6737101808159158 ns/iter 0.95
Regex_Caret_X_Hyphen 6.274229046337945 ns/iter 6.630473399527316 ns/iter 0.95
Regex_Period_Md_Dollar 68.22491133125496 ns/iter 72.12473806286219 ns/iter 0.95
Regex_Caret_Slash_Period_Asterisk 5.065476746554579 ns/iter 6.215811336759792 ns/iter 0.81
Regex_Caret_Period_Range_Dollar 2.0778663986836095 ns/iter 2.442503672773014 ns/iter 0.85
Regex_Nested_Backtrack 729.0860934124488 ns/iter 778.1836685264979 ns/iter 0.94
Pointer_Object_Traverse 14.789855512379075 ns/iter 15.889012852370337 ns/iter 0.93
Pointer_Object_Try_Traverse 31.725896573601894 ns/iter 33.4104883926905 ns/iter 0.95
Pointer_Push_Back_Pointer_To_Weak_Pointer 172.7217316670372 ns/iter 183.63642202813023 ns/iter 0.94

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: 0073e1e Previous: 08ea8d9 Ratio
Pointer_Object_Traverse 44.774279411417886 ns/iter 52.11801719840574 ns/iter 0.86
Pointer_Object_Try_Traverse 22.408160243515837 ns/iter 22.414314528018476 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 213.32444964035815 ns/iter 213.50259850350199 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 2.4904075097940757 ns/iter 2.4884240800170185 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.489238838168093 ns/iter 2.48587408908152 ns/iter 1.00
Regex_Period_Asterisk 2.4895153933094964 ns/iter 2.488464289802073 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 2.494174767651315 ns/iter 2.5487888335876563 ns/iter 0.98
Regex_Period_Plus 2.799085491803909 ns/iter 2.4891424237451614 ns/iter 1.12
Regex_Period 2.8007738618275098 ns/iter 2.5059946916387283 ns/iter 1.12
Regex_Caret_Period_Plus_Dollar 2.800605200674068 ns/iter 2.486641705289204 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 2.7972793570191588 ns/iter 2.4886072776807415 ns/iter 1.12
Regex_Caret_Period_Asterisk_Dollar 3.7279722272329847 ns/iter 2.796502317947934 ns/iter 1.33
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.727499524179437 ns/iter 2.799954662955765 ns/iter 1.33
Regex_Caret_X_Hyphen 12.448109471630962 ns/iter 13.053280698598012 ns/iter 0.95
Regex_Period_Md_Dollar 87.92562691833889 ns/iter 89.43861262849947 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 7.153335109577811 ns/iter 7.146004550915311 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 4.0664571862497185 ns/iter 4.038257818128988 ns/iter 1.01
Regex_Nested_Backtrack 824.847312885603 ns/iter 817.2460596747886 ns/iter 1.01
JSON_Array_Of_Objects_Unique 381.4357252964387 ns/iter 376.77039072668566 ns/iter 1.01
JSON_Parse_1 32869.40744382275 ns/iter 32592.001259854707 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 62.814763990830116 ns/iter 62.46220682271089 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 141.79247418458766 ns/iter 148.6278505563362 ns/iter 0.95

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: 0073e1e Previous: 08ea8d9 Ratio
JSON_Array_Of_Objects_Unique 418.5796107776889 ns/iter 418.99474403936665 ns/iter 1.00
JSON_Parse_1 82906.18722379081 ns/iter 79744.63640015424 ns/iter 1.04
JSON_Fast_Hash_Helm_Chart_Lock 56.118089999995384 ns/iter 54.36856000000034 ns/iter 1.03
JSON_Equality_Helm_Chart_Lock 218.1295000000105 ns/iter 217.9135058967219 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 8.125367374440685 ns/iter 8.165690588545985 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 8.261071838120843 ns/iter 7.798883000898016 ns/iter 1.06
Regex_Period_Asterisk 8.040854428387942 ns/iter 7.785533482143693 ns/iter 1.03
Regex_Group_Period_Asterisk_Group 7.843118303571777 ns/iter 7.862993303571843 ns/iter 1.00
Regex_Period_Plus 7.889820500492362 ns/iter 7.837021840012947 ns/iter 1.01
Regex_Period 7.88634907193545 ns/iter 7.974022321428313 ns/iter 0.99
Regex_Caret_Period_Plus_Dollar 7.802947544642994 ns/iter 8.013027901786327 ns/iter 0.97
Regex_Caret_Group_Period_Plus_Group_Dollar 8.351357105573998 ns/iter 8.489150854958405 ns/iter 0.98
Regex_Caret_Period_Asterisk_Dollar 7.970506696428308 ns/iter 7.753978794643299 ns/iter 1.03
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.80397764373295 ns/iter 7.883224518378094 ns/iter 0.99
Regex_Caret_X_Hyphen 11.617942857142793 ns/iter 11.952732812499534 ns/iter 0.97
Regex_Period_Md_Dollar 141.822315097219 ns/iter 143.64406250000985 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 12.115610714285399 ns/iter 11.67749062499901 ns/iter 1.04
Regex_Caret_Period_Range_Dollar 8.80138437500122 ns/iter 8.943330763645985 ns/iter 0.98
Regex_Nested_Backtrack 588.478392857082 ns/iter 587.8857142856677 ns/iter 1.00
Pointer_Object_Traverse 56.35006000001112 ns/iter 56.08248214285944 ns/iter 1.00
Pointer_Object_Try_Traverse 76.2199553571311 ns/iter 75.84008035713907 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 189.14878474544247 ns/iter 189.7341865834237 ns/iter 1.00

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

Please sign in to comment.