Skip to content

Implement better URI query parsing support#2369

Merged
jviotti merged 3 commits intomainfrom
uri-query
May 5, 2026
Merged

Implement better URI query parsing support#2369
jviotti merged 3 commits intomainfrom
uri-query

Conversation

@jviotti
Copy link
Copy Markdown
Member

@jviotti jviotti commented May 5, 2026

Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@augmentcode
Copy link
Copy Markdown

augmentcode Bot commented May 5, 2026

🤖 Augment PR Summary

Summary: This PR upgrades URI query handling by introducing a structured, zero-copy query view and updating the public API to expose it.

Changes:

  • Replaces the raw query accessor with URI::Query, a non-owning view over the RFC 3986 query component.
  • Adds URI::Query::at(name) for first-match lookup and a const_iterator to iterate (name, value) pairs split on &.
  • Implements the new query view and URI::query() accessor in a dedicated query.cc compilation unit.
  • Updates recomposition to use query().value().raw() when escaping/rebuilding the URI.
  • Expands unit tests to cover iteration, duplicates, empty values/keys, and percent-encoding preservation.

Technical Notes: URI::query() now returns std::optional<URI::Query>; callers that previously expected a std::string_view should use .raw() or the new navigation helpers.

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode Bot left a comment

Choose a reason for hiding this comment

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

Review completed. 1 suggestion posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread src/core/uri/query.cc
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 7 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/core/uri/query.cc">

<violation number="1" location="src/core/uri/query.cc:47">
P1: Returning a reference to an internal iterator member can cause dangling references (e.g., on `*it++`) and breaks standard forward iterator semantics. Consider returning by value and updating the iterator category to `std::input_iterator_tag` in the header.</violation>
</file>

Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.

Comment thread src/core/uri/query.cc
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Benchmark (linux/llvm)

Details
Benchmark suite Current: 9bb4aa1 Previous: 45a8ba7 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.1125334727067386 ns/iter 2.0194790836311793 ns/iter 1.54
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.111333699611573 ns/iter 2.0179692078165608 ns/iter 1.54
Regex_Period_Asterisk 3.110111335590759 ns/iter 2.0176073628265585 ns/iter 1.54
Regex_Group_Period_Asterisk_Group 3.106796346260538 ns/iter 2.025021509167517 ns/iter 1.53
Regex_Period_Plus 3.1028074174338385 ns/iter 2.3050427674260274 ns/iter 1.35
Regex_Period 2.9398523747284306 ns/iter 2.304262097638293 ns/iter 1.28
Regex_Caret_Period_Plus_Dollar 3.09958180909228 ns/iter 2.3045309545259913 ns/iter 1.34
Regex_Caret_Group_Period_Plus_Group_Dollar 3.102096299707986 ns/iter 2.3099642047841433 ns/iter 1.34
Regex_Caret_Period_Asterisk_Dollar 3.4799914723084315 ns/iter 2.0178658115149166 ns/iter 1.72
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.4247844701196373 ns/iter 2.024634998097668 ns/iter 1.69
Regex_Caret_X_Hyphen 12.45460613620147 ns/iter 8.657251430462427 ns/iter 1.44
Regex_Period_Md_Dollar 28.922256187137435 ns/iter 25.033251344358703 ns/iter 1.16
Regex_Caret_Slash_Period_Asterisk 6.242417456963809 ns/iter 8.31973445598763 ns/iter 0.75
Regex_Caret_Period_Range_Dollar 4.046698650053378 ns/iter 2.503746723115027 ns/iter 1.62
Regex_Nested_Backtrack 50.11083838002493 ns/iter 44.02491644318813 ns/iter 1.14
JSON_Array_Of_Objects_Unique 420.7270242793227 ns/iter 344.91819501436765 ns/iter 1.22
JSON_Parse_1 5976.483672531862 ns/iter 5187.58762855779 ns/iter 1.15
JSON_Parse_Real 10805.636443621066 ns/iter 10216.94509723864 ns/iter 1.06
JSON_Parse_Decimal 11762.523665810477 ns/iter 10127.583184827456 ns/iter 1.16
JSON_Parse_Schema_ISO_Language 3669460.884816426 ns/iter 3415823.4679805483 ns/iter 1.07
JSON_Fast_Hash_Helm_Chart_Lock 60.40320494484391 ns/iter 49.848046726972015 ns/iter 1.21
JSON_Equality_Helm_Chart_Lock 154.63090224864771 ns/iter 124.3865060237428 ns/iter 1.24
JSON_Divisible_By_Decimal 258.3999403537944 ns/iter 248.2268016221794 ns/iter 1.04
JSON_String_Equal/10 5.921258729326937 ns/iter 4.3229465423800395 ns/iter 1.37
JSON_String_Equal/100 6.545407263303965 ns/iter 5.477385414042954 ns/iter 1.19
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9369744725508831 ns/iter 0.6923139066815922 ns/iter 1.35
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.751982336932498 ns/iter 9.799335795840083 ns/iter 1.51
JSON_String_Fast_Hash/10 2.8036464405860095 ns/iter 2.3092639068717338 ns/iter 1.21
JSON_String_Fast_Hash/100 2.8039505393136044 ns/iter 2.304731004245581 ns/iter 1.22
JSON_String_Key_Hash/10 2.706129723993359 ns/iter 1.7372250034161196 ns/iter 1.56
JSON_String_Key_Hash/100 9.26297978703794 ns/iter 7.201517699126663 ns/iter 1.29
JSON_Object_Defines_Miss_Same_Length 3.7405444690801173 ns/iter 3.4119625673914076 ns/iter 1.10
JSON_Object_Defines_Miss_Too_Small 3.7532870108961447 ns/iter 3.6179345721630938 ns/iter 1.04
JSON_Object_Defines_Miss_Too_Large 3.7411425745134403 ns/iter 3.4179921473040475 ns/iter 1.09
Pointer_Object_Traverse 25.052513050756417 ns/iter 24.279211117229586 ns/iter 1.03
Pointer_Object_Try_Traverse 28.351346478718696 ns/iter 28.51995664091122 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 220.71066226998448 ns/iter 165.46946848313223 ns/iter 1.33
Pointer_Walker_Schema_ISO_Language 3103691.358406867 ns/iter 3048687.160173075 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/0 1410235.6383837748 ns/iter 1193605.4324785364 ns/iter 1.18
Pointer_Maybe_Tracked_Deeply_Nested/1 1796823.1435897672 ns/iter 2042502.6491711228 ns/iter 0.88
Pointer_Position_Tracker_Get_Deeply_Nested 600.1704038224548 ns/iter 738.7193700376592 ns/iter 0.81
Schema_Frame_WoT_References 5255249.93939412 ns/iter 4637210 ns/iter 1.13
Schema_Frame_OMC_References 23380857.387095485 ns/iter 19814438.30555602 ns/iter 1.18
Schema_Frame_OMC_Locations 20637049.73529505 ns/iter 18148618.820512243 ns/iter 1.14
Schema_Frame_ISO_Language_Locations 104978831.83332609 ns/iter 93437370.42857875 ns/iter 1.12
Schema_Frame_KrakenD_References 43594818.750001706 ns/iter 39181522.88888955 ns/iter 1.11
Schema_Frame_KrakenD_Reachable 615338993.000023 ns/iter 785209454.999972 ns/iter 0.78
Schema_Iterator_ISO_Language 3046835.41125514 ns/iter 2760178.8267716756 ns/iter 1.10
Schema_Frame_ISO_Language_Locations_To_JSON 109785216.1999981 ns/iter 117069693.00000766 ns/iter 0.94
Schema_Tracker_ISO_Language 5051448.309352786 ns/iter 4806375.296551589 ns/iter 1.05
Schema_Tracker_ISO_Language_To_JSON 19629325.857142378 ns/iter 20304337.599999856 ns/iter 0.97
Schema_Format_ISO_Language_To_JSON 112716027.16666014 ns/iter 100769348.14284348 ns/iter 1.12
Schema_Bundle_Meta_2020_12 1702919.9099748118 ns/iter 1542632.6880529346 ns/iter 1.10
Schema_Frame_Many_Resources_References 388745269.9999585 ns/iter 368030762.49998415 ns/iter 1.06
EditorSchema_ForEditor_EmbeddedResources 14077861.079999821 ns/iter 12341376.894736193 ns/iter 1.14
URITemplateRouter_Create 20091.682181921286 ns/iter 16113.00493155879 ns/iter 1.25
URITemplateRouter_Match 172.9810724766435 ns/iter 140.08301434437755 ns/iter 1.23
URITemplateRouter_Match_BasePath 199.1378166717423 ns/iter 159.5839405691207 ns/iter 1.25
URITemplateRouterView_Restore 5155.203583061794 ns/iter 2535.8548160508294 ns/iter 2.03
URITemplateRouterView_Match 157.64724211460273 ns/iter 140.26534454912715 ns/iter 1.12
URITemplateRouterView_Match_BasePath 179.0574264774082 ns/iter 158.14250277476813 ns/iter 1.13
URITemplateRouterView_Arguments 476.072338536292 ns/iter 424.08675971997985 ns/iter 1.12
JSONL_Parse_Large 10815236.218750358 ns/iter 9607888.410958005 ns/iter 1.13
JSONL_Parse_Large_GZIP 12040567.706896095 ns/iter 10829727.01538333 ns/iter 1.11
HTML_Build_Table_100000 64680634.81818056 ns/iter 74088373.55555736 ns/iter 0.87
HTML_Render_Table_100000 5474148.640624677 ns/iter 10532138.235293707 ns/iter 0.52

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

Copy link
Copy Markdown

@cubic-dev-ai cubic-dev-ai Bot left a comment

Choose a reason for hiding this comment

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

1 issue found across 1 file (changes from recent commits).

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/core/uri/include/sourcemeta/core/uri.h">

<violation number="1" location="src/core/uri/include/sourcemeta/core/uri.h:395">
P2: Use `#pragma warning(push/pop)` instead of `warning(default: 4251)` in this header to avoid leaking warning-state changes to includers.</violation>
</file>

Tip: Review your code locally with the cubic CLI to iterate faster.

std::size_t pair_start_{std::string_view::npos};
value_type current_{};
#if defined(_MSC_VER)
#pragma warning(default : 4251)
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: Use #pragma warning(push/pop) instead of warning(default: 4251) in this header to avoid leaking warning-state changes to includers.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/core/uri/include/sourcemeta/core/uri.h, line 395:

<comment>Use `#pragma warning(push/pop)` instead of `warning(default: 4251)` in this header to avoid leaking warning-state changes to includers.</comment>

<file context>
@@ -385,9 +385,15 @@ class SOURCEMETA_CORE_URI_EXPORT URI {
       std::size_t pair_start_{std::string_view::npos};
       value_type current_{};
+#if defined(_MSC_VER)
+#pragma warning(default : 4251)
+#endif
     };
</file context>

Tip: Review your code locally with the cubic CLI to iterate faster.

@jviotti jviotti merged commit 8b2e478 into main May 5, 2026
13 checks passed
@jviotti jviotti deleted the uri-query branch May 5, 2026 15:48
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Benchmark (windows/msvc)

Details
Benchmark suite Current: 9bb4aa1 Previous: 45a8ba7 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.099193750000292 ns/iter 4.090967105519034 ns/iter 0.76
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.495256868757913 ns/iter 4.711911840874758 ns/iter 0.74
Regex_Period_Asterisk 3.3307626614536368 ns/iter 4.151991659200414 ns/iter 0.80
Regex_Group_Period_Asterisk_Group 3.234468286303504 ns/iter 4.711408939087897 ns/iter 0.69
Regex_Period_Plus 2.638824618179483 ns/iter 3.7726087432636715 ns/iter 0.70
Regex_Period 2.6488789038849463 ns/iter 3.7698360432168903 ns/iter 0.70
Regex_Caret_Period_Plus_Dollar 2.970114909388073 ns/iter 4.408081249999896 ns/iter 0.67
Regex_Caret_Group_Period_Plus_Group_Dollar 2.9485048174793014 ns/iter 4.4046449999996184 ns/iter 0.67
Regex_Caret_Period_Asterisk_Dollar 3.222862499999987 ns/iter 4.734636228735168 ns/iter 0.68
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.2184808035710586 ns/iter 4.851801697511373 ns/iter 0.66
Regex_Caret_X_Hyphen 6.4830187499995064 ns/iter 7.879597098214524 ns/iter 0.82
Regex_Period_Md_Dollar 30.46695851175976 ns/iter 35.6017870383921 ns/iter 0.86
Regex_Caret_Slash_Period_Asterisk 6.456074107142789 ns/iter 7.987073660716351 ns/iter 0.81
Regex_Caret_Period_Range_Dollar 3.698620707682126 ns/iter 4.740848448082537 ns/iter 0.78
Regex_Nested_Backtrack 90.65927455357122 ns/iter 95.66745108629655 ns/iter 0.95
JSON_Array_Of_Objects_Unique 393.3213169642664 ns/iter 494.5819184334803 ns/iter 0.80
JSON_Parse_1 7864.760044642744 ns/iter 8102.502232143799 ns/iter 0.97
JSON_Parse_Real 14494.459821428052 ns/iter 16466.044638689644 ns/iter 0.88
JSON_Parse_Decimal 15175.493303572248 ns/iter 16015.705357140016 ns/iter 0.95
JSON_Parse_Schema_ISO_Language 6963428.888889212 ns/iter 5734969.999998611 ns/iter 1.21
JSON_Fast_Hash_Helm_Chart_Lock 50.698590000001786 ns/iter 65.86031249999077 ns/iter 0.77
JSON_Equality_Helm_Chart_Lock 233.8825855042084 ns/iter 248.0412499999472 ns/iter 0.94
JSON_Divisible_By_Decimal 274.4849341287648 ns/iter 248.50332142851323 ns/iter 1.10
JSON_String_Equal/10 9.479393261253005 ns/iter 12.306119642857995 ns/iter 0.77
JSON_String_Equal/100 11.457862500001122 ns/iter 12.922637500001397 ns/iter 0.89
JSON_String_Equal_Small_By_Perfect_Hash/10 1.4631790172037256 ns/iter 1.8915546445466236 ns/iter 0.77
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.952700848427662 ns/iter 12.93973571428556 ns/iter 0.77
JSON_String_Fast_Hash/10 2.679205689572376 ns/iter 3.8603737431055904 ns/iter 0.69
JSON_String_Fast_Hash/100 2.6480342857147274 ns/iter 3.763375171851026 ns/iter 0.70
JSON_String_Key_Hash/10 2.6980601315200667 ns/iter 3.788828028948971 ns/iter 0.71
JSON_String_Key_Hash/100 13.813338554406885 ns/iter 14.415251721357846 ns/iter 0.96
JSON_Object_Defines_Miss_Same_Length 4.086652730511799 ns/iter 3.773674278974765 ns/iter 1.08
JSON_Object_Defines_Miss_Too_Small 3.541854636533112 ns/iter 3.8628160645305165 ns/iter 0.92
JSON_Object_Defines_Miss_Too_Large 3.647706568199561 ns/iter 3.7795156249994677 ns/iter 0.97
Pointer_Object_Traverse 36.82235287841845 ns/iter 40.334708384645246 ns/iter 0.91
Pointer_Object_Try_Traverse 47.48521311350564 ns/iter 49.085849448087544 ns/iter 0.97
Pointer_Push_Back_Pointer_To_Weak_Pointer 175.77262114546494 ns/iter 151.77734375002265 ns/iter 1.16
Pointer_Walker_Schema_ISO_Language 12894633.92857166 ns/iter 11262345.312498923 ns/iter 1.14
Pointer_Maybe_Tracked_Deeply_Nested/0 2204485.1405628226 ns/iter 2092861.2040131877 ns/iter 1.05
Pointer_Maybe_Tracked_Deeply_Nested/1 3973549.7206704025 ns/iter 3038663.8392850985 ns/iter 1.31
Pointer_Position_Tracker_Get_Deeply_Nested 549.6233970336264 ns/iter 612.4539062500085 ns/iter 0.90
Schema_Frame_WoT_References 9929605.333333408 ns/iter 9987773.437497793 ns/iter 0.99
Schema_Frame_OMC_References 43376900.00000597 ns/iter 42428258.82352009 ns/iter 1.02
Schema_Frame_OMC_Locations 39665210.5263169 ns/iter 39454017.64706409 ns/iter 1.01
Schema_Frame_ISO_Language_Locations 186176149.9999943 ns/iter 189048375.00002715 ns/iter 0.98
Schema_Frame_KrakenD_References 84639728.57144395 ns/iter 87881614.28570415 ns/iter 0.96
Schema_Frame_KrakenD_Reachable 640425400.0001402 ns/iter 521385100.00008863 ns/iter 1.23
Schema_Iterator_ISO_Language 6804494.444445986 ns/iter 6491573.214284634 ns/iter 1.05
Schema_Frame_ISO_Language_Locations_To_JSON 290462300.00005835 ns/iter 293350650.0000931 ns/iter 0.99
Schema_Tracker_ISO_Language 18362543.243244078 ns/iter 16715959.459459653 ns/iter 1.10
Schema_Tracker_ISO_Language_To_JSON 51078509.0909022 ns/iter 49759990.00000684 ns/iter 1.03
Schema_Format_ISO_Language_To_JSON 186404533.3332645 ns/iter 196320433.3333124 ns/iter 0.95
Schema_Bundle_Meta_2020_12 2811213.6546212016 ns/iter 2907880.0847464586 ns/iter 0.97
Schema_Frame_Many_Resources_References 1408854399.999882 ns/iter 1507930800.0001674 ns/iter 0.93
EditorSchema_ForEditor_EmbeddedResources 26771917.85715292 ns/iter 28311775.000010658 ns/iter 0.95
URITemplateRouter_Create 22971.300000001804 ns/iter 25198.898449795666 ns/iter 0.91
URITemplateRouter_Match 229.21751906051745 ns/iter 212.79521874994603 ns/iter 1.08
URITemplateRouter_Match_BasePath 255.88249999998425 ns/iter 244.7892499999885 ns/iter 1.05
URITemplateRouterView_Restore 24351.571969065644 ns/iter 33063.75892856904 ns/iter 0.74
URITemplateRouterView_Match 163.36491495750028 ns/iter 168.49177467582768 ns/iter 0.97
URITemplateRouterView_Match_BasePath 188.56724005064694 ns/iter 194.47908879278083 ns/iter 0.97
URITemplateRouterView_Arguments 420.6025035445763 ns/iter 450.25368519993543 ns/iter 0.93
JSONL_Parse_Large 27523807.692310028 ns/iter 28415637.499999017 ns/iter 0.97
JSONL_Parse_Large_GZIP 27258039.285714272 ns/iter 28417644.00000102 ns/iter 0.96
HTML_Build_Table_100000 95023699.99998856 ns/iter 86573911.11109467 ns/iter 1.10
HTML_Render_Table_100000 12421376.785714041 ns/iter 7730326.666665456 ns/iter 1.61

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

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Benchmark (linux/gcc)

Details
Benchmark suite Current: 9bb4aa1 Previous: 45a8ba7 Ratio
HTML_Build_Table_100000 61931274.63635309 ns/iter 66913441.09090509 ns/iter 0.93
HTML_Render_Table_100000 5408543.374999297 ns/iter 4837269.551723599 ns/iter 1.12
JSONL_Parse_Large 12770307.381821444 ns/iter 12614729.818183564 ns/iter 1.01
JSONL_Parse_Large_GZIP 13842777.352942457 ns/iter 13756248.470586155 ns/iter 1.01
URITemplateRouter_Create 18110.210660486697 ns/iter 17615.1456516265 ns/iter 1.03
URITemplateRouter_Match 169.40770508506702 ns/iter 169.37277149552153 ns/iter 1.00
URITemplateRouter_Match_BasePath 191.1817853130448 ns/iter 201.70544870040092 ns/iter 0.95
URITemplateRouterView_Restore 6673.048277045665 ns/iter 6772.140889822357 ns/iter 0.99
URITemplateRouterView_Match 139.48909132946469 ns/iter 134.09761506229194 ns/iter 1.04
URITemplateRouterView_Match_BasePath 153.6879591355901 ns/iter 147.02447422400647 ns/iter 1.05
URITemplateRouterView_Arguments 459.1879282551457 ns/iter 471.7874048717393 ns/iter 0.97
EditorSchema_ForEditor_EmbeddedResources 13850406.274509713 ns/iter 14024190.419995649 ns/iter 0.99
Schema_Frame_WoT_References 5356074.409090443 ns/iter 5418419.746153912 ns/iter 0.99
Schema_Frame_OMC_References 21780336.781255018 ns/iter 22389110.8064509 ns/iter 0.97
Schema_Frame_OMC_Locations 20680552.142857775 ns/iter 20960397.117646072 ns/iter 0.99
Schema_Frame_ISO_Language_Locations 104902747.1666856 ns/iter 102553606.50000966 ns/iter 1.02
Schema_Frame_KrakenD_References 42193668.29410961 ns/iter 41346427.35293175 ns/iter 1.02
Schema_Frame_KrakenD_Reachable 565331205.0001205 ns/iter 569842866.0000445 ns/iter 0.99
Schema_Iterator_ISO_Language 3244120.9490733165 ns/iter 3231371.6301370203 ns/iter 1.00
Schema_Frame_ISO_Language_Locations_To_JSON 220801232.9999747 ns/iter 231415957.00000533 ns/iter 0.95
Schema_Tracker_ISO_Language 4882672.248275663 ns/iter 4675218.13333254 ns/iter 1.04
Schema_Tracker_ISO_Language_To_JSON 23306751.23333397 ns/iter 22448451.903227903 ns/iter 1.04
Schema_Format_ISO_Language_To_JSON 114383498.83330071 ns/iter 108763100.99994649 ns/iter 1.05
Schema_Bundle_Meta_2020_12 1785928.427118349 ns/iter 1765181.649877906 ns/iter 1.01
Schema_Frame_Many_Resources_References 384975520.5000065 ns/iter 373518602.50009847 ns/iter 1.03
Pointer_Object_Traverse 24.699391346473064 ns/iter 27.40503071769927 ns/iter 0.90
Pointer_Object_Try_Traverse 19.776856294104384 ns/iter 22.415626967736607 ns/iter 0.88
Pointer_Push_Back_Pointer_To_Weak_Pointer 158.67404126686023 ns/iter 177.02937369469876 ns/iter 0.90
Pointer_Walker_Schema_ISO_Language 3477031.6980200843 ns/iter 3549674.9528790195 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/0 1543788.7044446243 ns/iter 1520957.9039298766 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1786003.256997797 ns/iter 1725903.7857141 ns/iter 1.03
Pointer_Position_Tracker_Get_Deeply_Nested 481.12838120445133 ns/iter 446.4350414001053 ns/iter 1.08
JSON_Array_Of_Objects_Unique 443.59524108412865 ns/iter 454.8054374233276 ns/iter 0.98
JSON_Parse_1 7975.837894042173 ns/iter 7761.596266186841 ns/iter 1.03
JSON_Parse_Real 12184.852449575681 ns/iter 12286.942367848891 ns/iter 0.99
JSON_Parse_Decimal 17669.24752699436 ns/iter 16558.131300049157 ns/iter 1.07
JSON_Parse_Schema_ISO_Language 4650773.503311072 ns/iter 4578210.642856807 ns/iter 1.02
JSON_Fast_Hash_Helm_Chart_Lock 72.04595525079009 ns/iter 68.62598599365238 ns/iter 1.05
JSON_Equality_Helm_Chart_Lock 165.47618458859665 ns/iter 187.46625266774544 ns/iter 0.88
JSON_Divisible_By_Decimal 246.1753947255347 ns/iter 234.22549079678774 ns/iter 1.05
JSON_String_Equal/10 6.678645467182992 ns/iter 6.818047014119187 ns/iter 0.98
JSON_String_Equal/100 7.285886735350866 ns/iter 7.5262400340423286 ns/iter 0.97
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6239292061108008 ns/iter 0.7135713683901901 ns/iter 0.87
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.23213305844613 ns/iter 21.999782000494807 ns/iter 1.15
JSON_String_Fast_Hash/10 1.5801918589549884 ns/iter 1.0564556502239761 ns/iter 1.50
JSON_String_Fast_Hash/100 1.5580884463011153 ns/iter 1.0557867736040965 ns/iter 1.48
JSON_String_Key_Hash/10 1.2476057941647345 ns/iter 1.4070968606245982 ns/iter 0.89
JSON_String_Key_Hash/100 12.451405675146201 ns/iter 14.804276094589255 ns/iter 0.84
JSON_Object_Defines_Miss_Same_Length 3.42877384603738 ns/iter 3.871040267466122 ns/iter 0.89
JSON_Object_Defines_Miss_Too_Small 3.743724249762062 ns/iter 4.228899509926738 ns/iter 0.89
JSON_Object_Defines_Miss_Too_Large 3.1179052205570263 ns/iter 3.522250489738216 ns/iter 0.89
Regex_Lower_S_Or_Upper_S_Asterisk 1.246962410956999 ns/iter 1.4088685188363133 ns/iter 0.89
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.2474356770736954 ns/iter 1.4080911585542288 ns/iter 0.89
Regex_Period_Asterisk 1.5575688025500882 ns/iter 1.7605865903202818 ns/iter 0.88
Regex_Group_Period_Asterisk_Group 1.5680450379834778 ns/iter 1.4069783131341937 ns/iter 1.11
Regex_Period_Plus 1.2462540255556815 ns/iter 1.411931069884635 ns/iter 0.88
Regex_Period 1.2469428607460344 ns/iter 1.4073646104015693 ns/iter 0.89
Regex_Caret_Period_Plus_Dollar 1.5596218145192242 ns/iter 1.7607603512140186 ns/iter 0.89
Regex_Caret_Group_Period_Plus_Group_Dollar 1.559449056624118 ns/iter 1.759822374562039 ns/iter 0.89
Regex_Caret_Period_Asterisk_Dollar 1.5593310494115324 ns/iter 1.4076266164525884 ns/iter 1.11
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.5570154237929508 ns/iter 1.4082045180886664 ns/iter 1.11
Regex_Caret_X_Hyphen 12.137598648211174 ns/iter 11.598727932506637 ns/iter 1.05
Regex_Period_Md_Dollar 44.70197913958474 ns/iter 33.10798456178321 ns/iter 1.35
Regex_Caret_Slash_Period_Asterisk 4.984381398799327 ns/iter 4.220749280974567 ns/iter 1.18
Regex_Caret_Period_Range_Dollar 1.558299806835228 ns/iter 1.4095833563578286 ns/iter 1.11
Regex_Nested_Backtrack 54.828988356157446 ns/iter 49.8192035806824 ns/iter 1.10

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

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Benchmark (macos/llvm)

Details
Benchmark suite Current: 9bb4aa1 Previous: 45a8ba7 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2845125936473516 ns/iter 1.8903717058946956 ns/iter 1.21
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.0728240139222174 ns/iter 1.892535334686838 ns/iter 1.10
Regex_Period_Asterisk 2.525893666278766 ns/iter 1.842045981097986 ns/iter 1.37
Regex_Group_Period_Asterisk_Group 2.0403123277462067 ns/iter 1.8902422820606994 ns/iter 1.08
Regex_Period_Plus 2.48318503724138 ns/iter 2.233379221780786 ns/iter 1.11
Regex_Period 2.529264074704041 ns/iter 2.2525708913925877 ns/iter 1.12
Regex_Caret_Period_Plus_Dollar 2.4608484110901414 ns/iter 2.1706950027610077 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1023905263802396 ns/iter 2.1763587734896945 ns/iter 0.97
Regex_Caret_Period_Asterisk_Dollar 1.949108989555275 ns/iter 1.8386292543889888 ns/iter 1.06
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.9059676594979889 ns/iter 1.949880828312584 ns/iter 0.98
Regex_Caret_X_Hyphen 7.293118808228832 ns/iter 6.992643214663911 ns/iter 1.04
Regex_Period_Md_Dollar 23.084285739415606 ns/iter 23.51358684693838 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 5.572344409104575 ns/iter 5.760448072921925 ns/iter 0.97
Regex_Caret_Period_Range_Dollar 1.9796594911234149 ns/iter 2.0970469856088623 ns/iter 0.94
Regex_Nested_Backtrack 27.607728045537062 ns/iter 31.305320368525567 ns/iter 0.88
JSON_Array_Of_Objects_Unique 402.71149558778217 ns/iter 382.8452655059682 ns/iter 1.05
JSON_Parse_1 5003.540743396081 ns/iter 4442.111676363978 ns/iter 1.13
JSON_Parse_Real 7173.843908239562 ns/iter 6777.827094608913 ns/iter 1.06
JSON_Parse_Decimal 8715.104632557312 ns/iter 8674.289646370931 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 3186962.557602754 ns/iter 3902194.690058476 ns/iter 0.82
JSON_Fast_Hash_Helm_Chart_Lock 62.57235101722202 ns/iter 61.56094060632579 ns/iter 1.02
JSON_Equality_Helm_Chart_Lock 135.55117111783437 ns/iter 126.19717965707741 ns/iter 1.07
JSON_Divisible_By_Decimal 199.78207732691163 ns/iter 194.46675047482026 ns/iter 1.03
JSON_String_Equal/10 6.726930893777519 ns/iter 6.550164956419554 ns/iter 1.03
JSON_String_Equal/100 7.036158109821674 ns/iter 6.742996577214303 ns/iter 1.04
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8537955742783402 ns/iter 0.8154916838770983 ns/iter 1.05
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.035147750076311 ns/iter 3.6986975156975888 ns/iter 1.09
JSON_String_Fast_Hash/10 2.7009426823228093 ns/iter 2.5482165394089207 ns/iter 1.06
JSON_String_Fast_Hash/100 2.1762821715695275 ns/iter 2.1483589973732045 ns/iter 1.01
JSON_String_Key_Hash/10 1.5282563463700711 ns/iter 1.5240171767022674 ns/iter 1.00
JSON_String_Key_Hash/100 2.515724930028959 ns/iter 2.666070861740285 ns/iter 0.94
JSON_Object_Defines_Miss_Same_Length 2.5529265357883144 ns/iter 2.708407586646339 ns/iter 0.94
JSON_Object_Defines_Miss_Too_Small 2.4220724794562436 ns/iter 2.595199907441587 ns/iter 0.93
JSON_Object_Defines_Miss_Too_Large 2.5405750574728145 ns/iter 2.5762199505096497 ns/iter 0.99
Pointer_Object_Traverse 14.465548469647196 ns/iter 15.268859942360823 ns/iter 0.95
Pointer_Object_Try_Traverse 24.676189515665158 ns/iter 20.101845885292814 ns/iter 1.23
Pointer_Push_Back_Pointer_To_Weak_Pointer 166.39288166146616 ns/iter 179.75643976843745 ns/iter 0.93
Pointer_Walker_Schema_ISO_Language 5104536.000000154 ns/iter 5049588.329999324 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1160615.4266407103 ns/iter 1118472.0149254752 ns/iter 1.04
Pointer_Maybe_Tracked_Deeply_Nested/1 1548312.839430971 ns/iter 1634156.838709639 ns/iter 0.95
Pointer_Position_Tracker_Get_Deeply_Nested 401.9372303168658 ns/iter 406.95024281482705 ns/iter 0.99
Schema_Frame_WoT_References 5496445.830001448 ns/iter 5436972.79338852 ns/iter 1.01
Schema_Frame_OMC_References 28786480.769230578 ns/iter 26003823.69230986 ns/iter 1.11
Schema_Frame_OMC_Locations 23805531.933332227 ns/iter 22272604.166663732 ns/iter 1.07
Schema_Frame_ISO_Language_Locations 74937470.80000049 ns/iter 77667791.6666636 ns/iter 0.96
Schema_Frame_KrakenD_References 43225815.124998234 ns/iter 47828588.56249561 ns/iter 0.90
Schema_Frame_KrakenD_Reachable 498092395.99994725 ns/iter 437269582.4999937 ns/iter 1.14
Schema_Iterator_ISO_Language 2371684.9678570335 ns/iter 2394411.057692353 ns/iter 0.99
Schema_Frame_ISO_Language_Locations_To_JSON 75543599.99999179 ns/iter 74776824.11111648 ns/iter 1.01
Schema_Tracker_ISO_Language 9452127.101264488 ns/iter 8738582.216216633 ns/iter 1.08
Schema_Tracker_ISO_Language_To_JSON 13876425.372092303 ns/iter 14793251.750001937 ns/iter 0.94
Schema_Format_ISO_Language_To_JSON 76093055.44441566 ns/iter 76668362.50002688 ns/iter 0.99
Schema_Bundle_Meta_2020_12 1494582.6262050918 ns/iter 1354256.6634605727 ns/iter 1.10
Schema_Frame_Many_Resources_References 359174812.4999867 ns/iter 402555055.33332324 ns/iter 0.89
EditorSchema_ForEditor_EmbeddedResources 12676430.0357008 ns/iter 16173313.499982875 ns/iter 0.78
URITemplateRouter_Create 19224.37074388371 ns/iter 20117.908049857186 ns/iter 0.96
URITemplateRouter_Match 183.3977983612025 ns/iter 208.72897194903987 ns/iter 0.88
URITemplateRouter_Match_BasePath 245.1190067749421 ns/iter 227.74528008446532 ns/iter 1.08
URITemplateRouterView_Restore 18200.17121154774 ns/iter 15667.083826511589 ns/iter 1.16
URITemplateRouterView_Match 156.06387216811572 ns/iter 138.12262897296895 ns/iter 1.13
URITemplateRouterView_Match_BasePath 168.80825504759608 ns/iter 168.69979272746798 ns/iter 1.00
URITemplateRouterView_Arguments 463.5460897966459 ns/iter 438.81524529270905 ns/iter 1.06
JSONL_Parse_Large 13535004.464285651 ns/iter 12827433.166665494 ns/iter 1.06
JSONL_Parse_Large_GZIP 13467307.547617089 ns/iter 15004352.207546068 ns/iter 0.90
HTML_Build_Table_100000 82038222.22220777 ns/iter 71601079.200002 ns/iter 1.15
HTML_Render_Table_100000 5169888.3299991395 ns/iter 4716036.006173307 ns/iter 1.10

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant