Skip to content

Conversation

@jviotti
Copy link
Member

@jviotti jviotti commented Jan 1, 2026

Signed-off-by: Juan Cruz Viotti [email protected]

@jviotti jviotti force-pushed the uritemplate-router branch 2 times, most recently from abe9065 to 269d379 Compare January 1, 2026 14:06
Copy link

@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: 5b210bf Previous: f1d58ad Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.115695266226589 ns/iter 3.1178674989359645 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.107912433409003 ns/iter 3.1071481269077323 ns/iter 1.00
Regex_Period_Asterisk 3.11001775721665 ns/iter 3.106645254990401 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 3.107883419961116 ns/iter 3.109631945085598 ns/iter 1.00
Regex_Period_Plus 2.854175357809936 ns/iter 2.8435255152883245 ns/iter 1.00
Regex_Period 3.023567575090519 ns/iter 3.0956744072014493 ns/iter 0.98
Regex_Caret_Period_Plus_Dollar 2.848738591607518 ns/iter 3.0651805608831646 ns/iter 0.93
Regex_Caret_Group_Period_Plus_Group_Dollar 2.856300575144688 ns/iter 3.1058672461401113 ns/iter 0.92
Regex_Caret_Period_Asterisk_Dollar 3.4236804623150032 ns/iter 3.1072794491644955 ns/iter 1.10
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.418226354006442 ns/iter 3.113199528653695 ns/iter 1.10
Regex_Caret_X_Hyphen 10.624387682259787 ns/iter 10.620991560947408 ns/iter 1.00
Regex_Period_Md_Dollar 27.34454775182554 ns/iter 27.21139117020671 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 7.76956175489815 ns/iter 5.9080194337572065 ns/iter 1.32
Regex_Caret_Period_Range_Dollar 4.0403441273071365 ns/iter 3.1114948131825266 ns/iter 1.30
Regex_Nested_Backtrack 48.90620395680209 ns/iter 49.58965217309464 ns/iter 0.99
JSON_Array_Of_Objects_Unique 487.2127446723883 ns/iter 417.04139884300076 ns/iter 1.17
JSON_Parse_1 29154.848349165954 ns/iter 29320.687122444095 ns/iter 0.99
JSON_Parse_Real 37582.79779292479 ns/iter 37698.402092427525 ns/iter 1.00
JSON_Parse_Decimal 130075.51731200215 ns/iter 129913.08527993628 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 63.62164589158 ns/iter 55.977425403401995 ns/iter 1.14
JSON_Equality_Helm_Chart_Lock 170.83001908029027 ns/iter 160.85305225561123 ns/iter 1.06
JSON_String_Equal/10 7.472857578626232 ns/iter 7.161805187221278 ns/iter 1.04
JSON_String_Equal/100 8.107654216837954 ns/iter 7.779981354594725 ns/iter 1.04
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9382401193353184 ns/iter 0.9352820303403898 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.262196531076759 ns/iter 10.262090369117457 ns/iter 1.00
JSON_String_Fast_Hash/10 2.4895850633235916 ns/iter 2.1774400030321592 ns/iter 1.14
JSON_String_Fast_Hash/100 2.488543109244423 ns/iter 2.1778165909096345 ns/iter 1.14
JSON_String_Key_Hash/10 2.490008702184218 ns/iter 1.8697849988278399 ns/iter 1.33
JSON_String_Key_Hash/100 6.531459788270211 ns/iter 6.530386095536181 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.73584678591983 ns/iter 3.7368093835331 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.7358541431103625 ns/iter 3.736826392452337 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.735222546771187 ns/iter 3.747047343140769 ns/iter 1.00
Pointer_Object_Traverse 43.64370507214073 ns/iter 43.09052230879885 ns/iter 1.01
Pointer_Object_Try_Traverse 52.36108647410441 ns/iter 52.62722832235258 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 302.6609892922608 ns/iter 305.8529162760743 ns/iter 0.99
Schema_Frame_WoT_References 7338109.822916531 ns/iter 7310264.400001344 ns/iter 1.00
Schema_Frame_OMC_References 35502621.947366126 ns/iter 34861715.50000563 ns/iter 1.02
Schema_Frame_OMC_Locations 33685516.095233865 ns/iter 32448497.090905964 ns/iter 1.04
Schema_Frame_ISO_Language_Locations 163613526.50000072 ns/iter 158691332.75003833 ns/iter 1.03
Schema_Iterator_ISO_Language 3897472.5277777608 ns/iter 3835633.8186806347 ns/iter 1.02
Schema_PointerWalker_ISO_Language 4829127.986300896 ns/iter 4784928.856163987 ns/iter 1.01
Schema_Frame_ISO_Language_Locations_To_JSON 151827936.20001575 ns/iter 149197641.5999943 ns/iter 1.02
Schema_Tracker_ISO_Language 47884934.42857446 ns/iter 45321276.46666595 ns/iter 1.06
Schema_Tracker_ISO_Language_To_JSON 23150796.93548136 ns/iter 22456508.290316936 ns/iter 1.03
Schema_Format_ISO_Language_To_JSON 169693676.00000852 ns/iter 165168101.2500035 ns/iter 1.03
Schema_Bundle_Meta_2020_12 2179219.2857124237 ns/iter 2170246.844719298 ns/iter 1.00
Alterschema_Check_Readibility_ISO_Language_Set_3 265769539.50001326 ns/iter 288217037.9999707 ns/iter 0.92
Alterschema_Check_Readibility_OMC 39930658.4117633 ns/iter 39435327.05882128 ns/iter 1.01
URITemplateRouter_Create 16010.622992995786 ns/iter
URITemplateRouter_Match 169.97215887810032 ns/iter
URITemplateRouterView_Restore 8201.01422500527 ns/iter
URITemplateRouterView_Match 119.24980051590006 ns/iter

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

Copy link

@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: 5b210bf Previous: f1d58ad Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.7193605616856351 ns/iter 2.3055029228542474 ns/iter 0.75
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.7420566264821606 ns/iter 2.239492525988912 ns/iter 0.78
Regex_Period_Asterisk 1.744744929157034 ns/iter 2.626927920510165 ns/iter 0.66
Regex_Group_Period_Asterisk_Group 1.8563904447620505 ns/iter 2.579382444872539 ns/iter 0.72
Regex_Period_Plus 2.370974588485249 ns/iter 3.077257102344897 ns/iter 0.77
Regex_Period 2.1085135801802535 ns/iter 3.113987237812416 ns/iter 0.68
Regex_Caret_Period_Plus_Dollar 2.1396910402551237 ns/iter 3.2238332341896387 ns/iter 0.66
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1380277054658507 ns/iter 3.08421489834103 ns/iter 0.69
Regex_Caret_Period_Asterisk_Dollar 1.774985641013302 ns/iter 2.856050771569186 ns/iter 0.62
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.7405094928200833 ns/iter 3.1334619696552486 ns/iter 0.56
Regex_Caret_X_Hyphen 6.55393837419418 ns/iter 11.669492819548768 ns/iter 0.56
Regex_Period_Md_Dollar 20.63269844292167 ns/iter 36.13931746157078 ns/iter 0.57
Regex_Caret_Slash_Period_Asterisk 5.697075620010221 ns/iter 7.884754689728586 ns/iter 0.72
Regex_Caret_Period_Range_Dollar 1.791849292724414 ns/iter 2.118693114841744 ns/iter 0.85
Regex_Nested_Backtrack 32.36887561282086 ns/iter 35.10887904365844 ns/iter 0.92
JSON_Array_Of_Objects_Unique 360.64195530033714 ns/iter 368.82810069953706 ns/iter 0.98
JSON_Parse_1 23315.815053626517 ns/iter 25232.03261100155 ns/iter 0.92
JSON_Parse_Real 25304.058222975233 ns/iter 26439.662712650086 ns/iter 0.96
JSON_Parse_Decimal 259414.85972843211 ns/iter 257792.0286128456 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 59.44890256702711 ns/iter 59.980889812815924 ns/iter 0.99
JSON_Equality_Helm_Chart_Lock 137.71000785572414 ns/iter 141.04541662286655 ns/iter 0.98
JSON_String_Equal/10 7.030899715661587 ns/iter 6.98462197109783 ns/iter 1.01
JSON_String_Equal/100 6.576722832013737 ns/iter 8.671499562809057 ns/iter 0.76
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3387890406373244 ns/iter 0.46238011063707674 ns/iter 0.73
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.2663049900054038 ns/iter 5.655707079999956 ns/iter 0.58
JSON_String_Fast_Hash/10 2.533527405750024 ns/iter 3.0544121975683156 ns/iter 0.83
JSON_String_Fast_Hash/100 2.084161246704437 ns/iter 2.5827858581818988 ns/iter 0.81
JSON_String_Key_Hash/10 1.403153855086165 ns/iter 2.037677119735768 ns/iter 0.69
JSON_String_Key_Hash/100 2.183649587918242 ns/iter 3.3881599133214575 ns/iter 0.64
JSON_Object_Defines_Miss_Same_Length 2.741239170342995 ns/iter 3.5679484985895464 ns/iter 0.77
JSON_Object_Defines_Miss_Too_Small 2.8258173515973617 ns/iter 3.4893068408556296 ns/iter 0.81
JSON_Object_Defines_Miss_Too_Large 3.1315223593403076 ns/iter 3.3537874917680215 ns/iter 0.93
Pointer_Object_Traverse 17.390589615887258 ns/iter 15.319434176456259 ns/iter 1.14
Pointer_Object_Try_Traverse 20.110993922286756 ns/iter 21.534544156557704 ns/iter 0.93
Pointer_Push_Back_Pointer_To_Weak_Pointer 163.10608542747423 ns/iter 205.74002177370298 ns/iter 0.79
Schema_Frame_WoT_References 6780796.874996516 ns/iter 6817318.181818181 ns/iter 0.99
Schema_Frame_OMC_References 36090518.750006594 ns/iter 41666374.99999711 ns/iter 0.87
Schema_Frame_OMC_Locations 34525485.40001316 ns/iter 41305465.70587847 ns/iter 0.84
Schema_Frame_ISO_Language_Locations 121589966.60000412 ns/iter 273592944.33332103 ns/iter 0.44
Schema_Iterator_ISO_Language 3748933.840657568 ns/iter 5863920.419999432 ns/iter 0.64
Schema_PointerWalker_ISO_Language 6058703.301724908 ns/iter 8362332.299999764 ns/iter 0.72
Schema_Frame_ISO_Language_Locations_To_JSON 70679134.33335584 ns/iter 156409583.37499455 ns/iter 0.45
Schema_Tracker_ISO_Language 39110289.33334314 ns/iter 89572972.24999176 ns/iter 0.44
Schema_Tracker_ISO_Language_To_JSON 13699111.921569591 ns/iter 25048418.000001363 ns/iter 0.55
Schema_Format_ISO_Language_To_JSON 108945618.16667192 ns/iter 170105749.74997893 ns/iter 0.64
Schema_Bundle_Meta_2020_12 1551986.7244458713 ns/iter 3176828.655305781 ns/iter 0.49
Alterschema_Check_Readibility_ISO_Language_Set_3 183440646.0000082 ns/iter 396877458.50000054 ns/iter 0.46
Alterschema_Check_Readibility_OMC 39471361.84210888 ns/iter 57658559.50000644 ns/iter 0.68
URITemplateRouter_Create 15897.84413227247 ns/iter
URITemplateRouter_Match 161.74027774226346 ns/iter
URITemplateRouterView_Restore 10007.416469952495 ns/iter
URITemplateRouterView_Match 116.08152188793287 ns/iter

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

Copy link

@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: 5b210bf Previous: f1d58ad Ratio
URITemplateRouter_Create 14978.804443583778 ns/iter
URITemplateRouter_Match 162.20290823194398 ns/iter
URITemplateRouterView_Restore 8250.665468860827 ns/iter
URITemplateRouterView_Match 119.47651938698087 ns/iter
Alterschema_Check_Readibility_ISO_Language_Set_3 291035699.5000711 ns/iter 303024151.0000451 ns/iter 0.96
Alterschema_Check_Readibility_OMC 44842676.24999916 ns/iter 45604562.066652454 ns/iter 0.98
Schema_Frame_WoT_References 7983004.1249961555 ns/iter 8042505.318183078 ns/iter 0.99
Schema_Frame_OMC_References 39465772.77777882 ns/iter 39805764.22222587 ns/iter 0.99
Schema_Frame_OMC_Locations 37041307.36839847 ns/iter 36783539.526308425 ns/iter 1.01
Schema_Frame_ISO_Language_Locations 187705702.25001392 ns/iter 196375096.7499891 ns/iter 0.96
Schema_Iterator_ISO_Language 4695984.912162915 ns/iter 4808919.786763214 ns/iter 0.98
Schema_PointerWalker_ISO_Language 4472883.632259313 ns/iter 4576280.236841213 ns/iter 0.98
Schema_Frame_ISO_Language_Locations_To_JSON 269350159.0000172 ns/iter 296456491.9999475 ns/iter 0.91
Schema_Tracker_ISO_Language 51360721.64285517 ns/iter 52657399.00000182 ns/iter 0.98
Schema_Tracker_ISO_Language_To_JSON 34627363.79999569 ns/iter 40697214.83333271 ns/iter 0.85
Schema_Format_ISO_Language_To_JSON 184384173.75000426 ns/iter 188063900.66667214 ns/iter 0.98
Schema_Bundle_Meta_2020_12 2364099.4425621815 ns/iter 2386222.823740308 ns/iter 0.99
Pointer_Object_Traverse 51.538585256291285 ns/iter 46.78224904611937 ns/iter 1.10
Pointer_Object_Try_Traverse 22.73597491336835 ns/iter 22.73707821227679 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 174.9358376481107 ns/iter 143.06193732612172 ns/iter 1.22
JSON_Array_Of_Objects_Unique 394.0368521209279 ns/iter 384.89789412233114 ns/iter 1.02
JSON_Parse_1 32864.535499232516 ns/iter 32923.895829417845 ns/iter 1.00
JSON_Parse_Real 44040.559629571726 ns/iter 42293.136753689316 ns/iter 1.04
JSON_Parse_Decimal 155512.01623299802 ns/iter 155625.44585279564 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 56.436933296868375 ns/iter 50.557794203540574 ns/iter 1.12
JSON_Equality_Helm_Chart_Lock 153.64762945624778 ns/iter 161.7186299159228 ns/iter 0.95
JSON_String_Equal/10 6.650589672627771 ns/iter 7.076357592590824 ns/iter 0.94
JSON_String_Equal/100 7.276985974093844 ns/iter 6.6624808041154715 ns/iter 1.09
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9337085979463308 ns/iter 0.9348243935711099 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 13.396839293987119 ns/iter 13.731633510218774 ns/iter 0.98
JSON_String_Fast_Hash/10 1.9046050248740347 ns/iter 1.9046529616468597 ns/iter 1.00
JSON_String_Fast_Hash/100 1.9090516443550585 ns/iter 1.9063080789126114 ns/iter 1.00
JSON_String_Key_Hash/10 1.5567553209908727 ns/iter 1.5565360720246177 ns/iter 1.00
JSON_String_Key_Hash/100 12.425435886890158 ns/iter 12.428937202261466 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.4886932316757964 ns/iter 2.487494114154893 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 2.4868622455053435 ns/iter 2.4920882732792737 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 2.4898411866833716 ns/iter 2.4886632860835007 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 3.4195846491978434 ns/iter 3.110491985813103 ns/iter 1.10
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.42263936062989 ns/iter 3.112047257669795 ns/iter 1.10
Regex_Period_Asterisk 3.4210609225863062 ns/iter 3.1114129767053296 ns/iter 1.10
Regex_Group_Period_Asterisk_Group 3.4216936447962625 ns/iter 3.1096411888262283 ns/iter 1.10
Regex_Period_Plus 3.4208975930132874 ns/iter 3.421143306897234 ns/iter 1.00
Regex_Period 3.432806461150717 ns/iter 3.4245479186377716 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.419523681197961 ns/iter 3.1141111361877485 ns/iter 1.10
Regex_Caret_Group_Period_Plus_Group_Dollar 3.418291151236482 ns/iter 3.111910947503483 ns/iter 1.10
Regex_Caret_Period_Asterisk_Dollar 4.6642497322041905 ns/iter 3.420534633224145 ns/iter 1.36
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.663462834831845 ns/iter 3.4177957340541734 ns/iter 1.36
Regex_Caret_X_Hyphen 13.694259889752386 ns/iter 9.58626149576366 ns/iter 1.43
Regex_Period_Md_Dollar 35.93355451473529 ns/iter 35.64411158003885 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 9.958877239814393 ns/iter 9.333266680214786 ns/iter 1.07
Regex_Caret_Period_Range_Dollar 3.419322660540788 ns/iter 4.352522541519209 ns/iter 0.79
Regex_Nested_Backtrack 57.42498119855622 ns/iter 61.45803014035618 ns/iter 0.93

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

Copy link

@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/gcc)

Details
Benchmark suite Current: 5b210bf Previous: f1d58ad Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4439389491664962 ns/iter 2.2458267463584534 ns/iter 1.09
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.9169062519693862 ns/iter 2.100047628409433 ns/iter 1.39
Regex_Period_Asterisk 2.6442251460646506 ns/iter 2.5339553164110553 ns/iter 1.04
Regex_Group_Period_Asterisk_Group 2.8943941638817354 ns/iter 2.3895517771619645 ns/iter 1.21
Regex_Period_Plus 2.7548727521844274 ns/iter 2.379076235955374 ns/iter 1.16
Regex_Period 2.686761727762596 ns/iter 2.452300581652791 ns/iter 1.10
Regex_Caret_Period_Plus_Dollar 2.7587429449404715 ns/iter 2.3572600029633657 ns/iter 1.17
Regex_Caret_Group_Period_Plus_Group_Dollar 2.7172515134615134 ns/iter 2.5598184183582817 ns/iter 1.06
Regex_Caret_Period_Asterisk_Dollar 2.820683882632761 ns/iter 2.417652504655449 ns/iter 1.17
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.7431923763460464 ns/iter 2.4484160991160757 ns/iter 1.12
Regex_Caret_X_Hyphen 7.812391176465139 ns/iter 7.510966419611415 ns/iter 1.04
Regex_Period_Md_Dollar 24.250348080176543 ns/iter 24.195116891509034 ns/iter 1.00
Regex_Caret_Slash_Period_Asterisk 5.6625669482129775 ns/iter 5.161780012741253 ns/iter 1.10
Regex_Caret_Period_Range_Dollar 2.5685794631856576 ns/iter 2.363060158075453 ns/iter 1.09
Regex_Nested_Backtrack 48.414751955027434 ns/iter 46.98877030497741 ns/iter 1.03
JSON_Array_Of_Objects_Unique 307.06677354511856 ns/iter 325.206301950791 ns/iter 0.94
JSON_Parse_1 27360.911490333874 ns/iter 26645.772514931865 ns/iter 1.03
JSON_Parse_Real 30280.850855434684 ns/iter 33051.12194070979 ns/iter 0.92
JSON_Parse_Decimal 296437.2771405491 ns/iter 544909.9942695263 ns/iter 0.54
JSON_Fast_Hash_Helm_Chart_Lock 38.219142727061744 ns/iter 54.241361295080644 ns/iter 0.70
JSON_Equality_Helm_Chart_Lock 143.85353605577066 ns/iter 157.63862409747998 ns/iter 0.91
JSON_String_Equal/10 7.996647253451986 ns/iter 5.883797529141397 ns/iter 1.36
JSON_String_Equal/100 10.285685234792924 ns/iter 6.1828753594356005 ns/iter 1.66
JSON_String_Equal_Small_By_Perfect_Hash/10 1.4584074156477285 ns/iter 1.053618393201419 ns/iter 1.38
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.815072199889705 ns/iter 4.326136831620657 ns/iter 1.11
JSON_String_Fast_Hash/10 2.2840706184985504 ns/iter 2.2324114135229953 ns/iter 1.02
JSON_String_Fast_Hash/100 2.5837929176884757 ns/iter 2.1607206143619035 ns/iter 1.20
JSON_String_Key_Hash/10 1.9744734651874278 ns/iter 1.5586684923472183 ns/iter 1.27
JSON_String_Key_Hash/100 3.717563866020026 ns/iter 3.073476343182341 ns/iter 1.21
JSON_Object_Defines_Miss_Same_Length 2.4931252132971125 ns/iter 2.3000561423050483 ns/iter 1.08
JSON_Object_Defines_Miss_Too_Small 2.4727914348680082 ns/iter 2.1584691917058287 ns/iter 1.15
JSON_Object_Defines_Miss_Too_Large 2.435181880420261 ns/iter 2.1082697227164946 ns/iter 1.16
Pointer_Object_Traverse 64.3720197740289 ns/iter 64.43885820315212 ns/iter 1.00
Pointer_Object_Try_Traverse 44.29180864520179 ns/iter 39.773468356772305 ns/iter 1.11
Pointer_Push_Back_Pointer_To_Weak_Pointer 186.9731746427549 ns/iter 171.66477129589614 ns/iter 1.09
Schema_Frame_WoT_References 8801322.71693303 ns/iter 9083849.19166565 ns/iter 0.97
Schema_Frame_OMC_References 52147373.55709076 ns/iter 46819508.07571411 ns/iter 1.11
Schema_Frame_OMC_Locations 46129924.91040911 ns/iter 50352352.0060948 ns/iter 0.92
Schema_Frame_ISO_Language_Locations 174363970.75653076 ns/iter 188172340.3930664 ns/iter 0.93
Schema_Iterator_ISO_Language 4562999.828752265 ns/iter 3995295.4938334804 ns/iter 1.14
Schema_PointerWalker_ISO_Language 11795745.955573188 ns/iter 12390616.612556653 ns/iter 0.95
Schema_Frame_ISO_Language_Locations_To_JSON 246045768.2609558 ns/iter 174517989.15863037 ns/iter 1.41
Schema_Tracker_ISO_Language 57842438.03757887 ns/iter 44930232.89574517 ns/iter 1.29
Schema_Tracker_ISO_Language_To_JSON 35871380.8513823 ns/iter 27237259.823343027 ns/iter 1.32
Schema_Format_ISO_Language_To_JSON 227970600.12817383 ns/iter 179270029.06799316 ns/iter 1.27
Schema_Bundle_Meta_2020_12 2896340.8819059045 ns/iter 2008164.9368775482 ns/iter 1.44
Alterschema_Check_Readibility_ISO_Language_Set_3 279356956.4819336 ns/iter 254135370.2545166 ns/iter 1.10
Alterschema_Check_Readibility_OMC 63246098.431673914 ns/iter 60401218.278067455 ns/iter 1.05
URITemplateRouter_Create 19401.056112734503 ns/iter
URITemplateRouter_Match 236.3980659017976 ns/iter
URITemplateRouterView_Restore 10644.180051606772 ns/iter
URITemplateRouterView_Match 119.0895778058841 ns/iter

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

@jviotti jviotti force-pushed the uritemplate-router branch 16 times, most recently from c1bfe05 to acad885 Compare January 1, 2026 19:02
@jviotti jviotti marked this pull request as ready for review January 1, 2026 19:06
@jviotti jviotti changed the title [WIP] Prototype a URI Template router Implement a fast URI Template router Jan 1, 2026
@augmentcode
Copy link

augmentcode bot commented Jan 1, 2026

🤖 Augment PR Summary

Summary: This PR adds a fast, path-oriented URI Template router and an optional memory-mapped read-only router view for very fast matching.

Changes:

  • Introduces URITemplateRouter, a trie with sorted literal children plus a single variable/expansion child per node.
  • Adds strict parsing/validation for a routing-focused subset of RFC 6570 (supports {var} and {+var} as a catch-all).
  • Adds URITemplateRouterView with a binary serialization format (header + node table + string table) backed by core::FileView.
  • Adds router-specific error types for invalid path segments and variable-name conflicts.
  • Updates CMake/config wiring so the uritemplate component depends on io, and links benchmarks accordingly.
  • Adds benchmarks for router build/match and view restore/match, and replaces prior template match/is_matchable tests with router/router-view tests.

Technical Notes: Matching prefers literal segments (binary search), falls back to variables, and {+var} consumes the remaining path as a final segment.

🤖 Was this summary useful? React with 👍 or 👎

Copy link

@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. 3 suggestions posted.

Fix All in Augment

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

@jviotti jviotti force-pushed the uritemplate-router branch 4 times, most recently from f41f200 to c696b06 Compare January 1, 2026 20:52
@jviotti jviotti force-pushed the uritemplate-router branch from c696b06 to 15fee07 Compare January 1, 2026 20:58
@jviotti
Copy link
Member Author

jviotti commented Jan 1, 2026

augment review

Copy link

@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.

@jviotti jviotti force-pushed the uritemplate-router branch 5 times, most recently from 758fcdf to ca41ecd Compare January 2, 2026 14:25
@jviotti
Copy link
Member Author

jviotti commented Jan 2, 2026

augment review

Copy link

@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.

@jviotti jviotti force-pushed the uritemplate-router branch from ca41ecd to 5b210bf Compare January 2, 2026 14:45
@jviotti jviotti merged commit 32ec07d into main Jan 2, 2026
13 checks passed
@jviotti jviotti deleted the uritemplate-router branch January 2, 2026 14:58
Copy link

@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: 5b210bf Previous: f1d58ad Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 4.0985889358910645 ns/iter 4.107905355309553 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 4.713206260521119 ns/iter 4.097591882317337 ns/iter 1.15
Regex_Period_Asterisk 4.074918949074588 ns/iter 4.733607969805658 ns/iter 0.86
Regex_Group_Period_Asterisk_Group 4.714411496587252 ns/iter 4.512064374999625 ns/iter 1.04
Regex_Period_Plus 4.400875243571305 ns/iter 5.18335800000159 ns/iter 0.85
Regex_Period 4.403692500000034 ns/iter 5.081341000000066 ns/iter 0.87
Regex_Caret_Period_Plus_Dollar 5.041220693091552 ns/iter 4.793365313570187 ns/iter 1.05
Regex_Caret_Group_Period_Plus_Group_Dollar 5.02295100000083 ns/iter 4.5373638595818395 ns/iter 1.11
Regex_Caret_Period_Asterisk_Dollar 4.707024296478334 ns/iter 4.413291974136038 ns/iter 1.07
Regex_Caret_Group_Period_Asterisk_Group_Dollar 4.752108035713068 ns/iter 4.273567511828254 ns/iter 1.11
Regex_Caret_X_Hyphen 8.840084821427142 ns/iter 7.8777689732133025 ns/iter 1.12
Regex_Period_Md_Dollar 35.07637830493204 ns/iter 35.6351979577708 ns/iter 0.98
Regex_Caret_Slash_Period_Asterisk 7.859008928571752 ns/iter 7.411172991072285 ns/iter 1.06
Regex_Caret_Period_Range_Dollar 4.711734385516525 ns/iter 4.259958400464214 ns/iter 1.11
Regex_Nested_Backtrack 111.5295468749622 ns/iter 113.36173437499042 ns/iter 0.98
JSON_Array_Of_Objects_Unique 477.86892780300934 ns/iter 468.0464437603773 ns/iter 1.02
JSON_Parse_1 72758.38169645355 ns/iter 76910.30133928831 ns/iter 0.95
JSON_Parse_Real 96692.40625001409 ns/iter 97167.64430157187 ns/iter 1.00
JSON_Parse_Decimal 346402.20739223977 ns/iter 376766.86012770724 ns/iter 0.92
JSON_Fast_Hash_Helm_Chart_Lock 59.81913392856443 ns/iter 62.26030999998784 ns/iter 0.96
JSON_Equality_Helm_Chart_Lock 278.9731999541608 ns/iter 275.54193859192355 ns/iter 1.01
JSON_String_Equal/10 13.176328571424685 ns/iter 12.917284094119942 ns/iter 1.02
JSON_String_Equal/100 14.511859087001426 ns/iter 14.60923989013846 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 1.884241340968828 ns/iter 2.2576346874998876 ns/iter 0.83
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.554096428573303 ns/iter 12.963589897484217 ns/iter 0.97
JSON_String_Fast_Hash/10 3.1360049107149734 ns/iter 3.1374750850837803 ns/iter 1.00
JSON_String_Fast_Hash/100 3.138716964286914 ns/iter 3.204885195885122 ns/iter 0.98
JSON_String_Key_Hash/10 4.395480000002294 ns/iter 3.7931383928567293 ns/iter 1.16
JSON_String_Key_Hash/100 16.267529017852667 ns/iter 16.362390625001158 ns/iter 0.99
JSON_Object_Defines_Miss_Same_Length 3.7744408861165706 ns/iter 4.7061971885502265 ns/iter 0.80
JSON_Object_Defines_Miss_Too_Small 3.773208207547593 ns/iter 3.767095707558715 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.772168921836569 ns/iter 4.715888849812291 ns/iter 0.80
Pointer_Object_Traverse 57.74146428572229 ns/iter 54.21041964284866 ns/iter 1.07
Pointer_Object_Try_Traverse 70.20938392855669 ns/iter 69.28877678571357 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 168.03828125000157 ns/iter 169.31380374870207 ns/iter 0.99
Schema_Frame_WoT_References 15754302.439024573 ns/iter 16436948.780487798 ns/iter 0.96
Schema_Frame_OMC_References 75210377.77779485 ns/iter 74912822.22223264 ns/iter 1.00
Schema_Frame_OMC_Locations 70458388.88891214 ns/iter 70689355.55556284 ns/iter 1.00
Schema_Frame_ISO_Language_Locations 291233200.0000788 ns/iter 291803000.00007266 ns/iter 1.00
Schema_Iterator_ISO_Language 8454495.55555812 ns/iter 8499587.777777784 ns/iter 0.99
Schema_PointerWalker_ISO_Language 9990562.666668363 ns/iter 9751074.666667895 ns/iter 1.02
Schema_Frame_ISO_Language_Locations_To_JSON 228949266.66655615 ns/iter 240294100.00002825 ns/iter 0.95
Schema_Tracker_ISO_Language 108611516.66661803 ns/iter 110625833.33333957 ns/iter 0.98
Schema_Tracker_ISO_Language_To_JSON 54027736.36362987 ns/iter 58797509.09091606 ns/iter 0.92
Schema_Format_ISO_Language_To_JSON 289644950.0001381 ns/iter 330640399.99999297 ns/iter 0.88
Schema_Bundle_Meta_2020_12 3705502.139046999 ns/iter 3933051.9607819594 ns/iter 0.94
Alterschema_Check_Readibility_ISO_Language_Set_3 428092299.9998893 ns/iter 455578100.0000252 ns/iter 0.94
Alterschema_Check_Readibility_OMC 79010988.88886635 ns/iter 80941485.71428506 ns/iter 0.98
URITemplateRouter_Create 22118.021875002112 ns/iter
URITemplateRouter_Match 204.32041052141395 ns/iter
URITemplateRouterView_Restore 32361.65096329597 ns/iter

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.

2 participants