-
-
Notifications
You must be signed in to change notification settings - Fork 9
Implement a fast URI Template router #2153
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
abe9065 to
269d379
Compare
There was a problem hiding this 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.
There was a problem hiding this 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.
There was a problem hiding this 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.
There was a problem hiding this 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.
c1bfe05 to
acad885
Compare
🤖 Augment PR SummarySummary: This PR adds a fast, path-oriented URI Template router and an optional memory-mapped read-only router view for very fast matching. Changes:
Technical Notes: Matching prefers literal segments (binary search), falls back to variables, and 🤖 Was this summary useful? React with 👍 or 👎 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
f41f200 to
c696b06
Compare
c696b06 to
15fee07
Compare
|
augment review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
758fcdf to
ca41ecd
Compare
|
augment review |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Signed-off-by: Juan Cruz Viotti <[email protected]>
ca41ecd to
5b210bf
Compare
There was a problem hiding this 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.
Signed-off-by: Juan Cruz Viotti [email protected]