Skip to content

Support {/path*} segments in the URI Template router#2379

Merged
jviotti merged 3 commits into
mainfrom
router-path-segment-explode
May 13, 2026
Merged

Support {/path*} segments in the URI Template router#2379
jviotti merged 3 commits into
mainfrom
router-path-segment-explode

Conversation

@jviotti
Copy link
Copy Markdown
Member

@jviotti jviotti commented May 13, 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 13, 2026

🤖 Augment PR Summary

Summary: This PR extends the URI Template router to support optional greedy path capture via {/path*}, enabling routes like /list{/path*} to match both the base path and any trailing subpaths.

Changes:

  • Documented the supported (non-standard) URI Template operators for routing, including the new {/var*} form.
  • Added a new trie node type (OptionalExpansion) and parsing rules for the RFC6570 path-segment operator with explode ({/var*}), enforcing it as the final template component.
  • Updated matching logic to treat OptionalExpansion like the existing greedy expansion mid-path, plus a new end-of-path case that emits an empty capture when no trailing segments are present.
  • Updated the serialized router view matcher to mirror optional-expansion behavior.
  • Bumped the router blob format version (v7) and added compatibility tests to reject older blobs.
  • Added extensive unit tests covering parsing, matching behavior, precedence with sibling routes, and view round-trips.

🤖 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. 2 suggestions posted.

Fix All in Augment

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

assert(variable_index <=
std::numeric_limits<URITemplateRouter::Index>::max());
if ((*variable_child)->type == NodeType::Expansion) {
if ((*variable_child)->type >= NodeType::Expansion) {
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 13, 2026

Choose a reason for hiding this comment

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

src/core/uritemplate/uritemplate_router.cc:572: The type >= NodeType::Expansion check will also treat any future NodeType values added after OptionalExpansion as expansions, which could lead to incorrect matches. Consider keeping this constrained to just Expansion/OptionalExpansion (e.g., via the existing is_expansion_type).

Severity: low

Other Locations
  • src/core/uritemplate/uritemplate_router_view.cc:524

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

}

if (type == NodeType::Expansion && position < end) {
if (is_expansion_type(type) && position < end) {
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 13, 2026

Choose a reason for hiding this comment

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

src/core/uritemplate/uritemplate_router.cc:411: Since is_expansion_type(type) now includes OptionalExpansion, the thrown message ("Reserved expansion must be the last segment") can be raised for {/var*} too, which isn’t a reserved expansion. Consider adjusting the wording so the error remains accurate for both operators.

Severity: low

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

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.

No issues found across 5 files

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: 3192907 Previous: 7b802ef Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.8178663377634816 ns/iter 2.5027908754448647 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.4631380047680107 ns/iter 2.196142530356957 ns/iter 1.12
Regex_Period_Asterisk 2.8181486844453256 ns/iter 2.4915391575819084 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 2.463291199934046 ns/iter 2.198897385612394 ns/iter 1.12
Regex_Period_Plus 4.572866086187088 ns/iter 3.115540542652159 ns/iter 1.47
Regex_Period 3.979219458442481 ns/iter 2.8023337103573778 ns/iter 1.42
Regex_Caret_Period_Plus_Dollar 3.1716240501616584 ns/iter 3.1155129164471043 ns/iter 1.02
Regex_Caret_Group_Period_Plus_Group_Dollar 2.8215357485728654 ns/iter 2.663592212947221 ns/iter 1.06
Regex_Caret_Period_Asterisk_Dollar 4.223246571615784 ns/iter 2.770023736529308 ns/iter 1.52
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.8684739927593634 ns/iter 2.4924395514107944 ns/iter 1.55
Regex_Caret_X_Hyphen 7.742088785007419 ns/iter 6.859287415936712 ns/iter 1.13
Regex_Period_Md_Dollar 27.055330571452252 ns/iter 27.5412954880025 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 6.33037950122401 ns/iter 5.9170788101969505 ns/iter 1.07
Regex_Caret_Period_Range_Dollar 2.81525688886101 ns/iter 2.8982159824727334 ns/iter 0.97
Regex_Nested_Backtrack 37.54654194422163 ns/iter 42.041987622267335 ns/iter 0.89
JSON_Array_Of_Objects_Unique 457.1949285501155 ns/iter 421.99264113195204 ns/iter 1.08
JSON_Parse_1 5746.7683119394615 ns/iter 5914.433070734966 ns/iter 0.97
JSON_Parse_Real 10282.509616788111 ns/iter 10912.680134679988 ns/iter 0.94
JSON_Parse_Decimal 11088.042765503791 ns/iter 11713.056016009565 ns/iter 0.95
JSON_Parse_Schema_ISO_Language 3716212.856382884 ns/iter 3686770.4920632127 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 72.89260628198976 ns/iter 60.6759286001827 ns/iter 1.20
JSON_Equality_Helm_Chart_Lock 154.54627997039847 ns/iter 155.0866583681221 ns/iter 1.00
JSON_Divisible_By_Decimal 254.14021028893174 ns/iter 248.7548527025468 ns/iter 1.02
JSON_String_Equal/10 5.631771908062695 ns/iter 6.860498763958687 ns/iter 0.82
JSON_String_Equal/100 6.335025734730261 ns/iter 6.696077052275245 ns/iter 0.95
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0547749480424071 ns/iter 0.9359994385036102 ns/iter 1.13
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.33413226604303 ns/iter 10.28840930690599 ns/iter 1.20
JSON_String_Fast_Hash/10 2.4706173126855506 ns/iter 2.4929408549595506 ns/iter 0.99
JSON_String_Fast_Hash/100 2.462361204279121 ns/iter 2.5006387561630348 ns/iter 0.98
JSON_String_Key_Hash/10 2.4620576786702815 ns/iter 2.1811956758991844 ns/iter 1.13
JSON_String_Key_Hash/100 7.734941013314931 ns/iter 6.536988990945021 ns/iter 1.18
JSON_Object_Defines_Miss_Same_Length 4.297311774150236 ns/iter 3.7422621667482185 ns/iter 1.15
JSON_Object_Defines_Miss_Too_Small 4.331200680012021 ns/iter 3.747378709600303 ns/iter 1.16
JSON_Object_Defines_Miss_Too_Large 4.221309653178395 ns/iter 3.740206657593194 ns/iter 1.13
Pointer_Object_Traverse 27.305404186280015 ns/iter 25.032116754060286 ns/iter 1.09
Pointer_Object_Try_Traverse 30.503595029830485 ns/iter 28.0435218036287 ns/iter 1.09
Pointer_Push_Back_Pointer_To_Weak_Pointer 175.88609578290098 ns/iter 185.64656029233666 ns/iter 0.95
Pointer_Walker_Schema_ISO_Language 3171365.2636364545 ns/iter 3182897.31651392 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 1405361.4632653266 ns/iter 1435467.3641851489 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/1 1720900.3506173128 ns/iter 1945191.9860723547 ns/iter 0.88
Pointer_Position_Tracker_Get_Deeply_Nested 710.425660247772 ns/iter 590.0641380743065 ns/iter 1.20
Schema_Frame_WoT_References 5262332.075188314 ns/iter 5275846.992647611 ns/iter 1.00
Schema_Frame_OMC_References 22559809.12500277 ns/iter 23206058.000001427 ns/iter 0.97
Schema_Frame_OMC_Locations 20588770.882354498 ns/iter 21419435.363634076 ns/iter 0.96
Schema_Frame_ISO_Language_Locations 103689707.3333307 ns/iter 106873871.49999951 ns/iter 0.97
Schema_Frame_KrakenD_References 42980274.647060044 ns/iter 44661090.87500314 ns/iter 0.96
Schema_Frame_KrakenD_Reachable 616018836.999956 ns/iter 650631610.9999943 ns/iter 0.95
Schema_Iterator_ISO_Language 3103043.328946984 ns/iter 3098014.3080355 ns/iter 1.00
Schema_Frame_ISO_Language_Locations_To_JSON 111912205.99999952 ns/iter 115668071.20000248 ns/iter 0.97
Schema_Tracker_ISO_Language 4727069.775509601 ns/iter 4941312.484374905 ns/iter 0.96
Schema_Tracker_ISO_Language_To_JSON 18345552.105266076 ns/iter 19395130.111111786 ns/iter 0.95
Schema_Format_ISO_Language_To_JSON 112406954.83331819 ns/iter 118184531.6666757 ns/iter 0.95
Schema_Bundle_Meta_2020_12 1643636.0258844348 ns/iter 1693857.963141901 ns/iter 0.97
Schema_Frame_Many_Resources_References 382617507.5000151 ns/iter 392137580.4999911 ns/iter 0.98
EditorSchema_ForEditor_EmbeddedResources 13986551.73999714 ns/iter 14360732.539998934 ns/iter 0.97
URITemplateRouter_Create 30618.392534381535 ns/iter 32096.83096981113 ns/iter 0.95
URITemplateRouter_Match 172.75318819188232 ns/iter 173.04590210929882 ns/iter 1.00
URITemplateRouter_Match_BasePath 203.12536056631623 ns/iter 198.52632357591241 ns/iter 1.02
URITemplateRouterView_Restore 8909.061715703692 ns/iter 7941.995959933588 ns/iter 1.12
URITemplateRouterView_Match 144.90441009066413 ns/iter 141.6166061453953 ns/iter 1.02
URITemplateRouterView_Match_BasePath 162.95539988757523 ns/iter 160.8574068809758 ns/iter 1.01
URITemplateRouterView_Arguments 468.37277182412396 ns/iter 471.1065098627823 ns/iter 0.99
JSONL_Parse_Large 10231094.405798024 ns/iter 10914743.29687614 ns/iter 0.94
JSONL_Parse_Large_GZIP 11562501.065573534 ns/iter 12075621.258620216 ns/iter 0.96
HTML_Build_Table_100000 83040792.99999501 ns/iter 64133004.363632366 ns/iter 1.29
HTML_Render_Table_100000 5047574.810219075 ns/iter 5718363.268292114 ns/iter 0.88

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: 3192907 Previous: 7b802ef Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.370432767000293 ns/iter 2.042342403609238 ns/iter 1.16
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.6617872934935494 ns/iter 1.8955549850563544 ns/iter 1.40
Regex_Period_Asterisk 2.260958966931674 ns/iter 1.8990837939447949 ns/iter 1.19
Regex_Group_Period_Asterisk_Group 2.23642823991297 ns/iter 2.189736291973728 ns/iter 1.02
Regex_Period_Plus 2.6244976683482384 ns/iter 2.346811459052351 ns/iter 1.12
Regex_Period 2.5521996330124472 ns/iter 2.3317002825351523 ns/iter 1.09
Regex_Caret_Period_Plus_Dollar 2.6156029131477014 ns/iter 2.121936380301121 ns/iter 1.23
Regex_Caret_Group_Period_Plus_Group_Dollar 2.7732350599702573 ns/iter 2.147422017213214 ns/iter 1.29
Regex_Caret_Period_Asterisk_Dollar 2.870461021443844 ns/iter 1.876446490584356 ns/iter 1.53
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.380197004996924 ns/iter 1.8202365474899007 ns/iter 1.31
Regex_Caret_X_Hyphen 7.331691391530122 ns/iter 6.313596732555185 ns/iter 1.16
Regex_Period_Md_Dollar 23.74149282990622 ns/iter 17.027920458198167 ns/iter 1.39
Regex_Caret_Slash_Period_Asterisk 9.374666980147207 ns/iter 8.35830656693211 ns/iter 1.12
Regex_Caret_Period_Range_Dollar 2.4731501591691383 ns/iter 1.7559806457391014 ns/iter 1.41
Regex_Nested_Backtrack 33.11193113620239 ns/iter 26.684503493512015 ns/iter 1.24
JSON_Array_Of_Objects_Unique 413.1581355576008 ns/iter 367.11188934201397 ns/iter 1.13
JSON_Parse_1 6298.021017050964 ns/iter 5539.547788863451 ns/iter 1.14
JSON_Parse_Real 8912.019721623245 ns/iter 7447.854423811309 ns/iter 1.20
JSON_Parse_Decimal 12113.944159826182 ns/iter 8806.010940868275 ns/iter 1.38
JSON_Parse_Schema_ISO_Language 5426155.623931313 ns/iter 4583349.999999823 ns/iter 1.18
JSON_Fast_Hash_Helm_Chart_Lock 77.36277547352071 ns/iter 63.33015407677417 ns/iter 1.22
JSON_Equality_Helm_Chart_Lock 181.3253143975427 ns/iter 147.13787705480013 ns/iter 1.23
JSON_Divisible_By_Decimal 243.9431582872843 ns/iter 183.64869662179024 ns/iter 1.33
JSON_String_Equal/10 8.696891717616545 ns/iter 6.982899694179289 ns/iter 1.25
JSON_String_Equal/100 8.235835061249855 ns/iter 6.3318979691820045 ns/iter 1.30
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0167691143352837 ns/iter 0.8151507226832688 ns/iter 1.25
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.969434538649596 ns/iter 3.7343100946951693 ns/iter 1.33
JSON_String_Fast_Hash/10 3.1448245481451944 ns/iter 2.6933045846769064 ns/iter 1.17
JSON_String_Fast_Hash/100 2.664329825189556 ns/iter 2.417136341129862 ns/iter 1.10
JSON_String_Key_Hash/10 1.9168809200035637 ns/iter 1.4690708990964827 ns/iter 1.30
JSON_String_Key_Hash/100 3.093004231132885 ns/iter 2.547636430435103 ns/iter 1.21
JSON_Object_Defines_Miss_Same_Length 3.288434908648099 ns/iter 2.489647241322067 ns/iter 1.32
JSON_Object_Defines_Miss_Too_Small 3.6820724919540346 ns/iter 2.5860669128898155 ns/iter 1.42
JSON_Object_Defines_Miss_Too_Large 3.8463120758698817 ns/iter 2.5217420746790253 ns/iter 1.53
Pointer_Object_Traverse 19.766196812850197 ns/iter 14.038848648871129 ns/iter 1.41
Pointer_Object_Try_Traverse 26.43775070988109 ns/iter 19.77498389228761 ns/iter 1.34
Pointer_Push_Back_Pointer_To_Weak_Pointer 232.9403523517802 ns/iter 154.0237204535548 ns/iter 1.51
Pointer_Walker_Schema_ISO_Language 7041634.408602888 ns/iter 4199501.2023119675 ns/iter 1.68
Pointer_Maybe_Tracked_Deeply_Nested/0 1824701.2447759586 ns/iter 987790.1272229742 ns/iter 1.85
Pointer_Maybe_Tracked_Deeply_Nested/1 3028617.4709684225 ns/iter 1590307.9772727445 ns/iter 1.90
Pointer_Position_Tracker_Get_Deeply_Nested 671.2409509792442 ns/iter 421.2563901755242 ns/iter 1.59
Schema_Frame_WoT_References 8379618.867646808 ns/iter 5524878.329999865 ns/iter 1.52
Schema_Frame_OMC_References 46322595.58823481 ns/iter 31047156.250001725 ns/iter 1.49
Schema_Frame_OMC_Locations 44269309.93750489 ns/iter 29975396.94736492 ns/iter 1.48
Schema_Frame_ISO_Language_Locations 141359566.8000198 ns/iter 89838520.83334416 ns/iter 1.57
Schema_Frame_KrakenD_References 82854104.10001078 ns/iter 61490783.39999505 ns/iter 1.35
Schema_Frame_KrakenD_Reachable 703218999.9999901 ns/iter 602002458.0000154 ns/iter 1.17
Schema_Iterator_ISO_Language 3588020.936586406 ns/iter 2616776.6352941995 ns/iter 1.37
Schema_Frame_ISO_Language_Locations_To_JSON 140925833.2499803 ns/iter 94495763.83334108 ns/iter 1.49
Schema_Tracker_ISO_Language 8798406.858822465 ns/iter 5514472.115384286 ns/iter 1.60
Schema_Tracker_ISO_Language_To_JSON 21855217.741939407 ns/iter 15497803.853660537 ns/iter 1.41
Schema_Format_ISO_Language_To_JSON 109358716.40003824 ns/iter 88391875.00003238 ns/iter 1.24
Schema_Bundle_Meta_2020_12 2297340.032068873 ns/iter 1777203.4653222195 ns/iter 1.29
Schema_Frame_Many_Resources_References 565198000.0000094 ns/iter 324478999.9999966 ns/iter 1.74
EditorSchema_ForEditor_EmbeddedResources 16404258.30000254 ns/iter 14548320.661289485 ns/iter 1.13
URITemplateRouter_Create 37501.10602142721 ns/iter 34455.72759557933 ns/iter 1.09
URITemplateRouter_Match 243.96460743444632 ns/iter 183.89764706954102 ns/iter 1.33
URITemplateRouter_Match_BasePath 296.78521820563697 ns/iter 211.57935574990907 ns/iter 1.40
URITemplateRouterView_Restore 15916.995867470048 ns/iter 11604.748232482387 ns/iter 1.37
URITemplateRouterView_Match 188.9746755130643 ns/iter 143.3264627336948 ns/iter 1.32
URITemplateRouterView_Match_BasePath 227.3482816819598 ns/iter 173.69325231562863 ns/iter 1.31
URITemplateRouterView_Arguments 596.9695097822467 ns/iter 421.42283574829895 ns/iter 1.42
JSONL_Parse_Large 19502891.1944443 ns/iter 13181381.696426798 ns/iter 1.48
JSONL_Parse_Large_GZIP 22405927.419354595 ns/iter 15565473.557691472 ns/iter 1.44
HTML_Build_Table_100000 113044642.85714339 ns/iter 67895435.11110373 ns/iter 1.66
HTML_Render_Table_100000 7008069.094015996 ns/iter 4626305.281046336 ns/iter 1.51

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

@jviotti jviotti merged commit 46a5c00 into main May 13, 2026
13 checks passed
@jviotti jviotti deleted the router-path-segment-explode branch May 13, 2026 15:44
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: 3192907 Previous: 7b802ef Ratio
HTML_Build_Table_100000 52551863.38462619 ns/iter 62683500.27273135 ns/iter 0.84
HTML_Render_Table_100000 4541387.370130162 ns/iter 5379343.830769848 ns/iter 0.84
JSONL_Parse_Large 9856153.49296034 ns/iter 12679481.327272283 ns/iter 0.78
JSONL_Parse_Large_GZIP 10950038.261538655 ns/iter 13850433.100001283 ns/iter 0.79
URITemplateRouter_Create 22902.568380976423 ns/iter 31901.451312141042 ns/iter 0.72
URITemplateRouter_Match 120.93457349084726 ns/iter 181.58613333552762 ns/iter 0.67
URITemplateRouter_Match_BasePath 143.05737398498343 ns/iter 203.5030013056311 ns/iter 0.70
URITemplateRouterView_Restore 6941.845627091827 ns/iter 7586.546885834499 ns/iter 0.92
URITemplateRouterView_Match 97.70703193737177 ns/iter 137.73387886103365 ns/iter 0.71
URITemplateRouterView_Match_BasePath 117.89763675593707 ns/iter 160.83268534578178 ns/iter 0.73
URITemplateRouterView_Arguments 364.4245945479245 ns/iter 477.2460399950938 ns/iter 0.76
EditorSchema_ForEditor_EmbeddedResources 10777005.169235893 ns/iter 13910454.215696447 ns/iter 0.77
Schema_Frame_WoT_References 4264799.420731955 ns/iter 5299817.939394622 ns/iter 0.80
Schema_Frame_OMC_References 17913554.13158008 ns/iter 21726604.750000432 ns/iter 0.82
Schema_Frame_OMC_Locations 16572251.209301908 ns/iter 20061012.085716356 ns/iter 0.83
Schema_Frame_ISO_Language_Locations 78069447.12501718 ns/iter 98922304.14285612 ns/iter 0.79
Schema_Frame_KrakenD_References 33478800.095237948 ns/iter 38480594.55555762 ns/iter 0.87
Schema_Frame_KrakenD_Reachable 465910247.99988645 ns/iter 514625690.9997646 ns/iter 0.91
Schema_Iterator_ISO_Language 2453263.133333039 ns/iter 3374437.999999406 ns/iter 0.73
Schema_Frame_ISO_Language_Locations_To_JSON 188416746.7499651 ns/iter 217356966.3333031 ns/iter 0.87
Schema_Tracker_ISO_Language 3550677.5999995926 ns/iter 4634809.039735287 ns/iter 0.77
Schema_Tracker_ISO_Language_To_JSON 17487571.47499873 ns/iter 21811080.843747277 ns/iter 0.80
Schema_Format_ISO_Language_To_JSON 85796213.12503605 ns/iter 107186823.28566892 ns/iter 0.80
Schema_Bundle_Meta_2020_12 1389102.811506814 ns/iter 1784979.2199520662 ns/iter 0.78
Schema_Frame_Many_Resources_References 313954566.50000143 ns/iter 369103418.5000035 ns/iter 0.85
Pointer_Object_Traverse 20.56105286638547 ns/iter 25.175262371541987 ns/iter 0.82
Pointer_Object_Try_Traverse 17.10822481882934 ns/iter 19.95599171735563 ns/iter 0.86
Pointer_Push_Back_Pointer_To_Weak_Pointer 151.26899338572392 ns/iter 142.22686651241887 ns/iter 1.06
Pointer_Walker_Schema_ISO_Language 2889192.2093023383 ns/iter 3361784.5358853564 ns/iter 0.86
Pointer_Maybe_Tracked_Deeply_Nested/0 1215525.7421051846 ns/iter 1646630.248291919 ns/iter 0.74
Pointer_Maybe_Tracked_Deeply_Nested/1 1371413.3294115528 ns/iter 1786376.7806118734 ns/iter 0.77
Pointer_Position_Tracker_Get_Deeply_Nested 339.80748958607023 ns/iter 365.8562782091803 ns/iter 0.93
JSON_Array_Of_Objects_Unique 338.6889403281188 ns/iter 380.1613933951317 ns/iter 0.89
JSON_Parse_1 6096.057565035218 ns/iter 7919.968255220874 ns/iter 0.77
JSON_Parse_Real 9204.930931836903 ns/iter 12522.912201237292 ns/iter 0.74
JSON_Parse_Decimal 12576.942087721489 ns/iter 17720.880109610112 ns/iter 0.71
JSON_Parse_Schema_ISO_Language 3737483.3315508026 ns/iter 4713842.966442911 ns/iter 0.79
JSON_Fast_Hash_Helm_Chart_Lock 52.37177821976486 ns/iter 58.134310454575086 ns/iter 0.90
JSON_Equality_Helm_Chart_Lock 140.56549305544442 ns/iter 165.6097128304309 ns/iter 0.85
JSON_Divisible_By_Decimal 181.60114148726072 ns/iter 240.1729887067206 ns/iter 0.76
JSON_String_Equal/10 5.529050218911427 ns/iter 6.65419496457123 ns/iter 0.83
JSON_String_Equal/100 6.362577957498357 ns/iter 6.824839339888598 ns/iter 0.93
JSON_String_Equal_Small_By_Perfect_Hash/10 0.5538292653420692 ns/iter 0.6238756072516511 ns/iter 0.89
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 17.02899525363061 ns/iter 25.20203632692456 ns/iter 0.68
JSON_String_Fast_Hash/10 0.819453023701443 ns/iter 1.5574629350599067 ns/iter 0.53
JSON_String_Fast_Hash/100 0.8197567199650044 ns/iter 1.557168699836283 ns/iter 0.53
JSON_String_Key_Hash/10 1.3659120937358844 ns/iter 1.2463468087465344 ns/iter 1.10
JSON_String_Key_Hash/100 11.448208433624291 ns/iter 12.444431502125546 ns/iter 0.92
JSON_Object_Defines_Miss_Same_Length 3.009545786400838 ns/iter 3.4251725998357783 ns/iter 0.88
JSON_Object_Defines_Miss_Too_Small 2.728927593931614 ns/iter 3.7439060407838087 ns/iter 0.73
JSON_Object_Defines_Miss_Too_Large 3.2756662306251294 ns/iter 3.117048711803132 ns/iter 1.05
Regex_Lower_S_Or_Upper_S_Asterisk 0.8182218536616864 ns/iter 0.6263200936910747 ns/iter 1.31
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.8187018078534609 ns/iter 0.6232751088478752 ns/iter 1.31
Regex_Period_Asterisk 0.5459899015640349 ns/iter 0.9352279629651624 ns/iter 0.58
Regex_Group_Period_Asterisk_Group 0.5455990964775435 ns/iter 0.9348165327126073 ns/iter 0.58
Regex_Period_Plus 0.818943451218574 ns/iter 0.623951146605773 ns/iter 1.31
Regex_Period 0.8191940157170625 ns/iter 0.6226189347669949 ns/iter 1.32
Regex_Caret_Period_Plus_Dollar 0.5461075548926507 ns/iter 0.9345489655033568 ns/iter 0.58
Regex_Caret_Group_Period_Plus_Group_Dollar 0.5458486447351937 ns/iter 0.9344643390961049 ns/iter 0.58
Regex_Caret_Period_Asterisk_Dollar 0.8193295745194287 ns/iter 0.6237540540301462 ns/iter 1.31
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.820765709984115 ns/iter 0.6233888414369719 ns/iter 1.32
Regex_Caret_X_Hyphen 3.2727941266094183 ns/iter 4.068787584768896 ns/iter 0.80
Regex_Period_Md_Dollar 32.03796854880532 ns/iter 35.55364709750032 ns/iter 0.90
Regex_Caret_Slash_Period_Asterisk 2.99982417121399 ns/iter 4.677490352627219 ns/iter 0.64
Regex_Caret_Period_Range_Dollar 0.8188298445510426 ns/iter 0.8000393981626021 ns/iter 1.02
Regex_Nested_Backtrack 34.117688261698035 ns/iter 41.14608056765423 ns/iter 0.83

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 (windows/msvc)

Details
Benchmark suite Current: 3192907 Previous: 7b802ef Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 7.518966964283891 ns/iter 7.499262276786973 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 7.503039285714814 ns/iter 7.496532142856235 ns/iter 1.00
Regex_Period_Asterisk 7.5062723214307825 ns/iter 7.50671540178668 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 7.531322544644631 ns/iter 7.501282366071394 ns/iter 1.00
Regex_Period_Plus 9.685704867474975 ns/iter 9.672743260388295 ns/iter 1.00
Regex_Period 9.719823170897019 ns/iter 9.671493706823926 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 9.67842968750432 ns/iter 9.68569817104721 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 9.677307812502534 ns/iter 9.67870308179196 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 7.537602678573713 ns/iter 7.500390625000567 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 7.5018292410687435 ns/iter 7.501783482144475 ns/iter 1.00
Regex_Caret_X_Hyphen 11.76281250000244 ns/iter 11.765332142857687 ns/iter 1.00
Regex_Period_Md_Dollar 38.13959931893362 ns/iter 37.73838434550239 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 11.260366071423634 ns/iter 11.269760937498319 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 9.684180760335765 ns/iter 9.67023477825825 ns/iter 1.00
Regex_Nested_Backtrack 46.68097602670516 ns/iter 48.74948546316461 ns/iter 0.96
JSON_Array_Of_Objects_Unique 457.59955153591426 ns/iter 457.52970557241366 ns/iter 1.00
JSON_Parse_1 7851.244860509948 ns/iter 7852.650669641597 ns/iter 1.00
JSON_Parse_Real 15564.341517852701 ns/iter 15678.763392859959 ns/iter 0.99
JSON_Parse_Decimal 15761.689732138555 ns/iter 15671.571428573623 ns/iter 1.01
JSON_Parse_Schema_ISO_Language 5806951.785712856 ns/iter 6070907.142856186 ns/iter 0.96
JSON_Fast_Hash_Helm_Chart_Lock 59.72774999999534 ns/iter 54.37552678571933 ns/iter 1.10
JSON_Equality_Helm_Chart_Lock 266.3196592106968 ns/iter 269.9145000000109 ns/iter 0.99
JSON_Divisible_By_Decimal 251.43589285708654 ns/iter 260.1297499999841 ns/iter 0.97
JSON_String_Equal/10 12.53367321428251 ns/iter 12.543583928573655 ns/iter 1.00
JSON_String_Equal/100 12.851984374997016 ns/iter 13.12668035714637 ns/iter 0.98
JSON_String_Equal_Small_By_Perfect_Hash/10 2.19206406249981 ns/iter 2.1937509375000275 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.54403928571232 ns/iter 12.52571428571108 ns/iter 1.00
JSON_String_Fast_Hash/10 3.169693656469631 ns/iter 3.1497482142859616 ns/iter 1.01
JSON_String_Fast_Hash/100 3.1318937499987345 ns/iter 3.1415982142856285 ns/iter 1.00
JSON_String_Key_Hash/10 3.7636205289944096 ns/iter 3.7715453504077625 ns/iter 1.00
JSON_String_Key_Hash/100 16.562451898025543 ns/iter 17.48844233264029 ns/iter 0.95
JSON_Object_Defines_Miss_Same_Length 5.052266964282483 ns/iter 5.14999017857219 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Small 3.7669955357141505 ns/iter 3.7744291294635905 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.767297136130006 ns/iter 3.800636243213873 ns/iter 0.99
Pointer_Object_Traverse 45.900429595979595 ns/iter 45.95243508078296 ns/iter 1.00
Pointer_Object_Try_Traverse 49.605839999958334 ns/iter 49.799151785724206 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 173.95855405972043 ns/iter 174.16959202026456 ns/iter 1.00
Pointer_Walker_Schema_ISO_Language 10686614.062500155 ns/iter 11486478.124997035 ns/iter 0.93
Pointer_Maybe_Tracked_Deeply_Nested/0 2007899.6428570203 ns/iter 2001761.7857141495 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/1 3130666.5178578086 ns/iter 3199182.1428566226 ns/iter 0.98
Pointer_Position_Tracker_Get_Deeply_Nested 632.8449776787132 ns/iter 638.5363839286181 ns/iter 0.99
Schema_Frame_WoT_References 10157207.812497403 ns/iter 10036173.43749852 ns/iter 1.01
Schema_Frame_OMC_References 41795962.500003725 ns/iter 42830164.70588015 ns/iter 0.98
Schema_Frame_OMC_Locations 38854283.33332028 ns/iter 39804655.55554878 ns/iter 0.98
Schema_Frame_ISO_Language_Locations 194579800.00000438 ns/iter 190660199.99996796 ns/iter 1.02
Schema_Frame_KrakenD_References 89328199.9999797 ns/iter 90584214.28572468 ns/iter 0.99
Schema_Frame_KrakenD_Reachable 507093400.0000307 ns/iter 528002200.0001736 ns/iter 0.96
Schema_Iterator_ISO_Language 6471196.428569621 ns/iter 6496896.42857051 ns/iter 1.00
Schema_Frame_ISO_Language_Locations_To_JSON 284261950.00020015 ns/iter 289131600.00001884 ns/iter 0.98
Schema_Tracker_ISO_Language 9739834.666670503 ns/iter 10048764.06249977 ns/iter 0.97
Schema_Tracker_ISO_Language_To_JSON 46443578.57143534 ns/iter 50727890.90910523 ns/iter 0.92
Schema_Format_ISO_Language_To_JSON 177947249.99998835 ns/iter 191028633.33334124 ns/iter 0.93
Schema_Bundle_Meta_2020_12 2842621.6867444734 ns/iter 2905041.101697962 ns/iter 0.98
Schema_Frame_Many_Resources_References 1511650800.0000978 ns/iter 1564273599.9999785 ns/iter 0.97
EditorSchema_ForEditor_EmbeddedResources 27673380.00005111 ns/iter 28179104.000000734 ns/iter 0.98
URITemplateRouter_Create 38997.79575893904 ns/iter 39584.930626245514 ns/iter 0.99
URITemplateRouter_Match 209.46884555943282 ns/iter 211.9375937500223 ns/iter 0.99
URITemplateRouter_Match_BasePath 240.0997142857315 ns/iter 243.12757331163797 ns/iter 0.99
URITemplateRouterView_Restore 30706.80690444508 ns/iter 30095.59353661516 ns/iter 1.02
URITemplateRouterView_Match 157.6254190374816 ns/iter 162.9385491071389 ns/iter 0.97
URITemplateRouterView_Match_BasePath 190.10037411606842 ns/iter 189.15009724553502 ns/iter 1.01
URITemplateRouterView_Arguments 460.69570551245073 ns/iter 442.13038603645913 ns/iter 1.04
JSONL_Parse_Large 27869795.454535052 ns/iter 27912347.999999836 ns/iter 1.00
JSONL_Parse_Large_GZIP 27532907.692305412 ns/iter 27631476.923077643 ns/iter 1.00
HTML_Build_Table_100000 83623966.66668954 ns/iter 86629542.85715127 ns/iter 0.97
HTML_Render_Table_100000 6776723.214284987 ns/iter 7570748.88888888 ns/iter 0.90

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