Support {/path*} segments in the URI Template router#2379
Conversation
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
🤖 Augment PR SummarySummary: This PR extends the URI Template router to support optional greedy path capture via Changes:
🤖 Was this summary useful? React with 👍 or 👎 |
| assert(variable_index <= | ||
| std::numeric_limits<URITemplateRouter::Index>::max()); | ||
| if ((*variable_child)->type == NodeType::Expansion) { | ||
| if ((*variable_child)->type >= NodeType::Expansion) { |
There was a problem hiding this comment.
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
🤖 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) { |
There was a problem hiding this comment.
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
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com