Add a UTS #46 variant of is_idn_email#2566
Conversation
See: json-schema-org/JSON-Schema-Test-Suite#945 Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
🤖 Augment PR SummarySummary: This PR adds a UTS #46 “lookup/profile” variant of internationalized email validation, so domains can be validated after UTS #46 mapping/NFC normalization instead of strict IDNA 2008. Changes:
Technical Notes: Address-literals remain validated as address literals (not IDNA/UTS #46), while only the domain-name path switches between strict IDNA 2008 and UTS #46 mapping + validation. 🤖 Was this summary useful? React with 👍 or 👎 |
| /// @ingroup email | ||
| /// Check whether the given string is a valid internationalized `Mailbox` per | ||
| /// RFC 6531 Section 3.3, validating the domain under UTS #46 processing rather | ||
| /// than strict IDNA 2008. The domain is mapped and NFC-normalised before |
There was a problem hiding this comment.
is_idn_email already accepts uppercase ASCII domains (hostnames are case-insensitive), so the wording/example here (“uppercase … accepted rather than rejected” / user@EXAMPLE.COM) doesn’t clearly demonstrate the behavioral difference of the UTS #46 variant. Consider tweaking the wording/example to a case the strict IDNA 2008 path actually rejects (e.g., an uppercase A-label like XN--…).
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
There was a problem hiding this comment.
1 issue found across 4 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
Benchmark (macos/llvm)
Details
| Benchmark suite | Current: d02ad29 | Previous: 4048ee6 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.6623982237905461 ns/iter |
2.1764035660774526 ns/iter |
0.76 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.6948780852564893 ns/iter |
1.99677202573484 ns/iter |
0.85 |
Regex_Period_Asterisk |
1.605385781578038 ns/iter |
1.8526513641568618 ns/iter |
0.87 |
Regex_Group_Period_Asterisk_Group |
1.5826802458859528 ns/iter |
1.883134298007101 ns/iter |
0.84 |
Regex_Period_Plus |
1.8920958279244215 ns/iter |
2.434544905740072 ns/iter |
0.78 |
Regex_Period |
1.9402301898704184 ns/iter |
3.259568874663385 ns/iter |
0.60 |
Regex_Caret_Period_Plus_Dollar |
1.9456454981594178 ns/iter |
2.8070411072821186 ns/iter |
0.69 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.8897356433161614 ns/iter |
2.7962393752783616 ns/iter |
0.68 |
Regex_Caret_Period_Asterisk_Dollar |
1.571619926023894 ns/iter |
2.1845145987398533 ns/iter |
0.72 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
1.595023814618664 ns/iter |
1.9175262824619335 ns/iter |
0.83 |
Regex_Caret_X_Hyphen |
6.018681220733286 ns/iter |
7.427741819309506 ns/iter |
0.81 |
Regex_Period_Md_Dollar |
16.296598618513315 ns/iter |
24.213059333491756 ns/iter |
0.67 |
Regex_Caret_Slash_Period_Asterisk |
4.220978670755705 ns/iter |
6.12451515560205 ns/iter |
0.69 |
Regex_Caret_Period_Range_Dollar |
1.8937020547287142 ns/iter |
2.583066957468891 ns/iter |
0.73 |
Regex_Nested_Backtrack |
23.05550295060882 ns/iter |
33.963511245021714 ns/iter |
0.68 |
JSON_Array_Of_Objects_Unique |
314.57972580300196 ns/iter |
473.10410013098675 ns/iter |
0.66 |
JSON_Parse_1 |
4808.782248582356 ns/iter |
4489.026266366949 ns/iter |
1.07 |
JSON_Parse_Real |
5456.309401166838 ns/iter |
6112.241757717647 ns/iter |
0.89 |
JSON_Parse_Decimal |
6128.991803994013 ns/iter |
6979.824945369025 ns/iter |
0.88 |
JSON_Parse_Schema_ISO_Language |
2995310.4338840954 ns/iter |
3819525.0000001127 ns/iter |
0.78 |
JSON_Parse_Integer |
3599.9769277036203 ns/iter |
3627.0504682335495 ns/iter |
0.99 |
JSON_Parse_String_NonSSO_Plain |
5014.647919999788 ns/iter |
4805.371523826404 ns/iter |
1.04 |
JSON_Parse_String_SSO_Plain |
2497.749550015238 ns/iter |
2418.8972945546548 ns/iter |
1.03 |
JSON_Parse_String_Escape_Heavy |
20506.961740574538 ns/iter |
21369.815666568782 ns/iter |
0.96 |
JSON_Parse_Object_Short_Keys |
6294.099083699603 ns/iter |
6530.43082482224 ns/iter |
0.96 |
JSON_Parse_Object_Scalar_Properties |
3269.091531420152 ns/iter |
3626.284032534533 ns/iter |
0.90 |
JSON_Parse_Object_Array_Properties |
4966.894437027032 ns/iter |
4951.276387461505 ns/iter |
1.00 |
JSON_Parse_Object_Object_Properties |
5329.941417696212 ns/iter |
4660.584039363441 ns/iter |
1.14 |
JSON_Parse_Nested_Containers |
41692.14882239647 ns/iter |
37542.43852031258 ns/iter |
1.11 |
JSON_From_String_Copy |
21.650002922047157 ns/iter |
35.807427479433116 ns/iter |
0.60 |
JSON_From_String_Temporary |
17.725796755896933 ns/iter |
27.276465486994862 ns/iter |
0.65 |
JSON_Number_To_Double |
30.20622667387133 ns/iter |
43.885472971749934 ns/iter |
0.69 |
JSON_Object_At_Last_Key/8 |
3.450088665534238 ns/iter |
4.546369757074229 ns/iter |
0.76 |
JSON_Object_At_Last_Key/32 |
10.988370150210285 ns/iter |
15.693483533332312 ns/iter |
0.70 |
JSON_Object_At_Last_Key/128 |
50.702483002392285 ns/iter |
72.68661172949298 ns/iter |
0.70 |
JSON_Object_At_Last_Key/512 |
185.57768948493356 ns/iter |
248.1569419970999 ns/iter |
0.75 |
JSON_Fast_Hash_Helm_Chart_Lock |
54.3387276845618 ns/iter |
77.0523068369891 ns/iter |
0.71 |
JSON_Equality_Helm_Chart_Lock |
131.67516602633907 ns/iter |
168.59165857063306 ns/iter |
0.78 |
JSON_Divisible_By_Decimal |
169.89140830395567 ns/iter |
221.44083870659495 ns/iter |
0.77 |
JSON_String_Equal/10 |
6.458451458516186 ns/iter |
8.567960303099172 ns/iter |
0.75 |
JSON_String_Equal/100 |
6.821028334935533 ns/iter |
8.47260251374773 ns/iter |
0.81 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.322396370418929 ns/iter |
1.0539424574506333 ns/iter |
0.31 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.489763674129708 ns/iter |
4.169813174918657 ns/iter |
0.84 |
JSON_String_Fast_Hash/10 |
2.33692862281807 ns/iter |
2.9337398516025637 ns/iter |
0.80 |
JSON_String_Fast_Hash/100 |
1.9424546473688886 ns/iter |
2.44387267540013 ns/iter |
0.79 |
JSON_String_Key_Hash/10 |
1.957103534327991 ns/iter |
1.7440217517574597 ns/iter |
1.12 |
JSON_String_Key_Hash/100 |
2.180083900452336 ns/iter |
2.9350993316071565 ns/iter |
0.74 |
JSON_Object_Defines_Miss_Same_Length |
2.6975393816724482 ns/iter |
3.527405903810227 ns/iter |
0.76 |
JSON_Object_Defines_Miss_Too_Small |
2.5614699625530455 ns/iter |
3.43753697790247 ns/iter |
0.75 |
JSON_Object_Defines_Miss_Too_Large |
2.52175376998132 ns/iter |
3.7294989534899816 ns/iter |
0.68 |
Pointer_Object_Traverse |
17.143606138895592 ns/iter |
17.950352731973112 ns/iter |
0.96 |
Pointer_Object_Try_Traverse |
16.5216159738225 ns/iter |
31.618883783783588 ns/iter |
0.52 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
146.72632397653746 ns/iter |
201.72863042973836 ns/iter |
0.73 |
Pointer_Walker_Schema_ISO_Language |
1405520.3747493362 ns/iter |
3662673.828124833 ns/iter |
0.38 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
938518.3766756752 ns/iter |
1233481.2783299126 ns/iter |
0.76 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
960920.950600738 ns/iter |
1816778.9757413173 ns/iter |
0.53 |
Pointer_Position_Tracker_Get_Deeply_Nested |
312.2142865201429 ns/iter |
443.44476704999244 ns/iter |
0.70 |
URITemplateRouter_Create |
21516.808456039136 ns/iter |
27618.533157551687 ns/iter |
0.78 |
URITemplateRouter_Match |
165.78798266269393 ns/iter |
199.63260775631073 ns/iter |
0.83 |
URITemplateRouter_Match_BasePath |
185.39388158980148 ns/iter |
275.22780699044137 ns/iter |
0.67 |
URITemplateRouterView_Restore |
9977.917080621797 ns/iter |
15343.47799825582 ns/iter |
0.65 |
URITemplateRouterView_Match |
124.40446551190429 ns/iter |
178.08126994433718 ns/iter |
0.70 |
URITemplateRouterView_Match_BasePath |
144.9665091293204 ns/iter |
196.25405159193738 ns/iter |
0.74 |
URITemplateRouterView_Arguments |
513.1062857788714 ns/iter |
521.090791000006 ns/iter |
0.98 |
JSONL_Parse_Large |
9874773.152776899 ns/iter |
16251914.720931191 ns/iter |
0.61 |
JSONL_Parse_Large_GZIP |
11147728.530302588 ns/iter |
17429979.18181676 ns/iter |
0.64 |
HTML_Build_Table_100000 |
34563510.44999906 ns/iter |
76493444.44444574 ns/iter |
0.45 |
HTML_Render_Table_100000 |
1520944.2606382656 ns/iter |
5991329.169999062 ns/iter |
0.25 |
GZIP_Compress_ISO_Language_Set_3_Locations |
24826602.67857081 ns/iter |
31256797.61904805 ns/iter |
0.79 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
3161949.427350402 ns/iter |
7196824.561403222 ns/iter |
0.44 |
GZIP_Compress_ISO_Language_Set_3_Schema |
1538597.093676703 ns/iter |
2038082.1917806563 ns/iter |
0.75 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
249179.47457627664 ns/iter |
387314.0422315155 ns/iter |
0.64 |
JOSE_VerifySignature_RS256 |
20210.919861733393 ns/iter |
30413.297375929822 ns/iter |
0.66 |
JOSE_VerifySignature_ES512 |
1035143.5935199374 ns/iter |
1169883.531496109 ns/iter |
0.88 |
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: d02ad29 | Previous: 4048ee6 | Ratio |
|---|---|---|---|
JOSE_VerifySignature_RS256 |
22032.54650674364 ns/iter |
22266.785521425067 ns/iter |
0.99 |
JOSE_VerifySignature_ES512 |
575344.7175698578 ns/iter |
576110.6218905459 ns/iter |
1.00 |
GZIP_Compress_ISO_Language_Set_3_Locations |
36595942.68420781 ns/iter |
36502170.47368187 ns/iter |
1.00 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4235490.066667174 ns/iter |
4172983.544910227 ns/iter |
1.01 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2040070.4606412197 ns/iter |
2042755.2711371044 ns/iter |
1.00 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
380071.06844106346 ns/iter |
381099.7945504151 ns/iter |
1.00 |
HTML_Build_Table_100000 |
60487945.66666516 ns/iter |
60082884.583332926 ns/iter |
1.01 |
HTML_Render_Table_100000 |
2011766.0868348468 ns/iter |
1817148.2519480744 ns/iter |
1.11 |
JSONL_Parse_Large |
13350264.884617392 ns/iter |
12919511.037037207 ns/iter |
1.03 |
JSONL_Parse_Large_GZIP |
14728914.854167385 ns/iter |
14264042.571428537 ns/iter |
1.03 |
URITemplateRouter_Create |
31164.42112757582 ns/iter |
31157.278334958362 ns/iter |
1.00 |
URITemplateRouter_Match |
158.28978845997062 ns/iter |
158.57690975883406 ns/iter |
1.00 |
URITemplateRouter_Match_BasePath |
184.04411713633434 ns/iter |
183.90132713122162 ns/iter |
1.00 |
URITemplateRouterView_Restore |
7989.316792826955 ns/iter |
7666.921940513652 ns/iter |
1.04 |
URITemplateRouterView_Match |
124.80127628300846 ns/iter |
125.10632868255603 ns/iter |
1.00 |
URITemplateRouterView_Match_BasePath |
145.14012645872998 ns/iter |
145.2079380277629 ns/iter |
1.00 |
URITemplateRouterView_Arguments |
473.0948699515308 ns/iter |
472.4667903697095 ns/iter |
1.00 |
Pointer_Object_Traverse |
30.330816685974803 ns/iter |
30.27262940913709 ns/iter |
1.00 |
Pointer_Object_Try_Traverse |
23.067913662690927 ns/iter |
23.081742546986558 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
150.9530514598938 ns/iter |
159.74260848900968 ns/iter |
0.94 |
Pointer_Walker_Schema_ISO_Language |
1864770.7936509352 ns/iter |
1860241.1759999692 ns/iter |
1.00 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1556829.0645879726 ns/iter |
1528576.741794133 ns/iter |
1.02 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1837485.9052630058 ns/iter |
1685897.5180721574 ns/iter |
1.09 |
Pointer_Position_Tracker_Get_Deeply_Nested |
607.8161065290661 ns/iter |
471.11029435043133 ns/iter |
1.29 |
JSON_Array_Of_Objects_Unique |
367.26118660366893 ns/iter |
363.1519166323676 ns/iter |
1.01 |
JSON_Parse_1 |
7689.045440111538 ns/iter |
7766.661414441249 ns/iter |
0.99 |
JSON_Parse_Real |
6560.560763725323 ns/iter |
6585.673161078797 ns/iter |
1.00 |
JSON_Parse_Decimal |
11074.218391897562 ns/iter |
11153.286169637333 ns/iter |
0.99 |
JSON_Parse_Schema_ISO_Language |
5113583.788321081 ns/iter |
5132335.963235799 ns/iter |
1.00 |
JSON_Parse_Integer |
4758.833000987207 ns/iter |
4784.349710332022 ns/iter |
0.99 |
JSON_Parse_String_NonSSO_Plain |
8465.927818661683 ns/iter |
8343.85850620991 ns/iter |
1.01 |
JSON_Parse_String_SSO_Plain |
3928.4991136093727 ns/iter |
3906.0628943088577 ns/iter |
1.01 |
JSON_Parse_String_Escape_Heavy |
20636.244031987913 ns/iter |
20647.231553510315 ns/iter |
1.00 |
JSON_Parse_Object_Short_Keys |
14102.00806516815 ns/iter |
14092.17769459986 ns/iter |
1.00 |
JSON_Parse_Object_Scalar_Properties |
5938.672144101279 ns/iter |
5916.8067897439705 ns/iter |
1.00 |
JSON_Parse_Object_Array_Properties |
8770.914085688288 ns/iter |
8808.168937671458 ns/iter |
1.00 |
JSON_Parse_Object_Object_Properties |
9333.736603642528 ns/iter |
9437.192196804392 ns/iter |
0.99 |
JSON_Parse_Nested_Containers |
71446.89147365942 ns/iter |
71672.41068499091 ns/iter |
1.00 |
JSON_From_String_Copy |
18.22936602984476 ns/iter |
18.243736270635292 ns/iter |
1.00 |
JSON_From_String_Temporary |
15.189544893509362 ns/iter |
15.202914494552747 ns/iter |
1.00 |
JSON_Number_To_Double |
20.57865199636867 ns/iter |
20.587348763200122 ns/iter |
1.00 |
JSON_Object_At_Last_Key/8 |
8.106229108393562 ns/iter |
8.11891364658947 ns/iter |
1.00 |
JSON_Object_At_Last_Key/32 |
31.54236066930132 ns/iter |
31.48866108491314 ns/iter |
1.00 |
JSON_Object_At_Last_Key/128 |
126.8718093024453 ns/iter |
126.94187191797639 ns/iter |
1.00 |
JSON_Object_At_Last_Key/512 |
516.2317709600449 ns/iter |
516.9219301530949 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
54.58761556414376 ns/iter |
59.997615173174886 ns/iter |
0.91 |
JSON_Equality_Helm_Chart_Lock |
159.60621700606077 ns/iter |
151.14682996024283 ns/iter |
1.06 |
JSON_Divisible_By_Decimal |
238.89004347821083 ns/iter |
241.57760078819462 ns/iter |
0.99 |
JSON_String_Equal/10 |
5.704734918886388 ns/iter |
5.691205048614837 ns/iter |
1.00 |
JSON_String_Equal/100 |
6.308025545184635 ns/iter |
6.333820130918482 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.6240672838497 ns/iter |
0.6237147481331986 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
25.194341119969465 ns/iter |
25.20152099029248 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
1.2450434994701542 ns/iter |
1.2540496443594888 ns/iter |
0.99 |
JSON_String_Fast_Hash/100 |
1.2454624347756824 ns/iter |
1.2465990100324398 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.2464666873232255 ns/iter |
1.2474550631484178 ns/iter |
1.00 |
JSON_String_Key_Hash/100 |
12.446174339317967 ns/iter |
12.446754854496948 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.1139472286681453 ns/iter |
3.1172555919429565 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.1160319677569346 ns/iter |
3.1160318867042527 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.428037507416348 ns/iter |
3.4245014140078576 ns/iter |
1.00 |
Regex_Lower_S_Or_Upper_S_Asterisk |
0.6233893364898438 ns/iter |
0.6230950706725208 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
0.9347816672175308 ns/iter |
0.9370915128129015 ns/iter |
1.00 |
Regex_Period_Asterisk |
0.9344431509712148 ns/iter |
0.9357735823534248 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
0.6232740588097189 ns/iter |
0.6254471710922188 ns/iter |
1.00 |
Regex_Period_Plus |
0.6234830073031877 ns/iter |
0.6233240235603942 ns/iter |
1.00 |
Regex_Period |
0.934796452853025 ns/iter |
0.9433402804877113 ns/iter |
0.99 |
Regex_Caret_Period_Plus_Dollar |
0.9343711719934782 ns/iter |
0.9350525644705054 ns/iter |
1.00 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
0.62545759785002 ns/iter |
0.6236302806623176 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
0.6233596158832166 ns/iter |
0.6247574684825675 ns/iter |
1.00 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
0.9347208592010603 ns/iter |
0.9348090011231459 ns/iter |
1.00 |
Regex_Caret_X_Hyphen |
4.052348242728176 ns/iter |
4.050964443894756 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
39.12776640277942 ns/iter |
30.28685260890108 ns/iter |
1.29 |
Regex_Caret_Slash_Period_Asterisk |
4.358589119385683 ns/iter |
4.371911386331653 ns/iter |
1.00 |
Regex_Caret_Period_Range_Dollar |
1.2457048961796864 ns/iter |
1.2460128871563463 ns/iter |
1.00 |
Regex_Nested_Backtrack |
44.32299196439203 ns/iter |
37.16566376770156 ns/iter |
1.19 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Benchmark (linux/llvm)
Details
| Benchmark suite | Current: d02ad29 | Previous: 4048ee6 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
3.165995797688748 ns/iter |
2.4623836167799307 ns/iter |
1.29 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
3.1655777642470677 ns/iter |
2.455570197285836 ns/iter |
1.29 |
Regex_Period_Asterisk |
2.8128418209556503 ns/iter |
2.1873285130017845 ns/iter |
1.29 |
Regex_Group_Period_Asterisk_Group |
2.813136811298752 ns/iter |
2.1842493336633937 ns/iter |
1.29 |
Regex_Period_Plus |
4.577688443086096 ns/iter |
3.5789114712635013 ns/iter |
1.28 |
Regex_Period |
4.577420646429131 ns/iter |
3.547939345927602 ns/iter |
1.29 |
Regex_Caret_Period_Plus_Dollar |
4.23230665568463 ns/iter |
3.277112469476214 ns/iter |
1.29 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
4.231479685478082 ns/iter |
3.2851914744906487 ns/iter |
1.29 |
Regex_Caret_Period_Asterisk_Dollar |
3.5388476000754867 ns/iter |
2.738128909233881 ns/iter |
1.29 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.5393907547685246 ns/iter |
2.735068115803646 ns/iter |
1.29 |
Regex_Caret_X_Hyphen |
7.399895754503337 ns/iter |
5.730939787705172 ns/iter |
1.29 |
Regex_Period_Md_Dollar |
26.59741548638188 ns/iter |
21.669259892521616 ns/iter |
1.23 |
Regex_Caret_Slash_Period_Asterisk |
8.098419586535682 ns/iter |
4.908440290759753 ns/iter |
1.65 |
Regex_Caret_Period_Range_Dollar |
4.576710923779264 ns/iter |
3.5486183550476857 ns/iter |
1.29 |
Regex_Nested_Backtrack |
37.66086984920547 ns/iter |
29.27937726518043 ns/iter |
1.29 |
JSON_Array_Of_Objects_Unique |
475.71166061479994 ns/iter |
351.0338115952374 ns/iter |
1.36 |
JSON_Parse_1 |
4896.798937716073 ns/iter |
3753.6397066695254 ns/iter |
1.30 |
JSON_Parse_Real |
5282.851997167955 ns/iter |
4076.5959646239576 ns/iter |
1.30 |
JSON_Parse_Decimal |
7649.616229474347 ns/iter |
5943.528592641305 ns/iter |
1.29 |
JSON_Parse_Schema_ISO_Language |
3647539.3230772074 ns/iter |
2922277.058577032 ns/iter |
1.25 |
JSON_Parse_Integer |
3944.539906607874 ns/iter |
3151.3000301161605 ns/iter |
1.25 |
JSON_Parse_String_NonSSO_Plain |
5166.607323935458 ns/iter |
4045.9456208796682 ns/iter |
1.28 |
JSON_Parse_String_SSO_Plain |
2822.800064485171 ns/iter |
2294.6764746311183 ns/iter |
1.23 |
JSON_Parse_String_Escape_Heavy |
16018.455712335224 ns/iter |
11887.258514140853 ns/iter |
1.35 |
JSON_Parse_Object_Short_Keys |
8082.35572343046 ns/iter |
6500.323796909247 ns/iter |
1.24 |
JSON_Parse_Object_Scalar_Properties |
4096.206906826646 ns/iter |
3286.6911534580427 ns/iter |
1.25 |
JSON_Parse_Object_Array_Properties |
5947.824779439962 ns/iter |
4505.8314955162405 ns/iter |
1.32 |
JSON_Parse_Object_Object_Properties |
5908.493198941012 ns/iter |
4455.937166345655 ns/iter |
1.33 |
JSON_Parse_Nested_Containers |
45603.30531754845 ns/iter |
35710.82923343752 ns/iter |
1.28 |
JSON_From_String_Copy |
23.227724981765697 ns/iter |
18.02914126855002 ns/iter |
1.29 |
JSON_From_String_Temporary |
21.204795339317748 ns/iter |
16.875714391457414 ns/iter |
1.26 |
JSON_Number_To_Double |
22.52910515078453 ns/iter |
17.46779178259951 ns/iter |
1.29 |
JSON_Object_At_Last_Key/8 |
5.979968362989374 ns/iter |
4.63492657307964 ns/iter |
1.29 |
JSON_Object_At_Last_Key/32 |
24.26850131674097 ns/iter |
18.648144873878557 ns/iter |
1.30 |
JSON_Object_At_Last_Key/128 |
91.79697098935235 ns/iter |
70.96396696740419 ns/iter |
1.29 |
JSON_Object_At_Last_Key/512 |
379.81275230615546 ns/iter |
293.8086672885385 ns/iter |
1.29 |
JSON_Fast_Hash_Helm_Chart_Lock |
79.4213212028984 ns/iter |
61.44177280191249 ns/iter |
1.29 |
JSON_Equality_Helm_Chart_Lock |
157.40486162242587 ns/iter |
117.76855612957701 ns/iter |
1.34 |
JSON_Divisible_By_Decimal |
254.64662125135197 ns/iter |
200.0652321709456 ns/iter |
1.27 |
JSON_String_Equal/10 |
5.979882199041689 ns/iter |
4.63598521169871 ns/iter |
1.29 |
JSON_String_Equal/100 |
6.684667765329317 ns/iter |
5.454255020758393 ns/iter |
1.23 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
1.0542406873164156 ns/iter |
0.8178083443709027 ns/iter |
1.29 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
12.342994730211178 ns/iter |
9.572701536444955 ns/iter |
1.29 |
JSON_String_Fast_Hash/10 |
2.8160851151940753 ns/iter |
2.1822281411108144 ns/iter |
1.29 |
JSON_String_Fast_Hash/100 |
2.8618433626394713 ns/iter |
2.1828209473239144 ns/iter |
1.31 |
JSON_String_Key_Hash/10 |
2.8133830939663 ns/iter |
2.182332388204075 ns/iter |
1.29 |
JSON_String_Key_Hash/100 |
7.732804413296127 ns/iter |
6.2704605323970615 ns/iter |
1.23 |
JSON_Object_Defines_Miss_Same_Length |
4.2209754403398625 ns/iter |
3.272641473856714 ns/iter |
1.29 |
JSON_Object_Defines_Miss_Too_Small |
2.96190679004101 ns/iter |
2.280921330067922 ns/iter |
1.30 |
JSON_Object_Defines_Miss_Too_Large |
2.9030438173340594 ns/iter |
2.2784922474293974 ns/iter |
1.27 |
Pointer_Object_Traverse |
25.516452261018827 ns/iter |
19.76965873221761 ns/iter |
1.29 |
Pointer_Object_Try_Traverse |
30.6252562764434 ns/iter |
23.750294474539526 ns/iter |
1.29 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
188.6296109995736 ns/iter |
151.00104285397012 ns/iter |
1.25 |
Pointer_Walker_Schema_ISO_Language |
1782222.346835486 ns/iter |
1417999.6354380203 ns/iter |
1.26 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1278391.0600001037 ns/iter |
997758.9235208388 ns/iter |
1.28 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1676525.0599522549 ns/iter |
1269285.7970747917 ns/iter |
1.32 |
Pointer_Position_Tracker_Get_Deeply_Nested |
705.263070442714 ns/iter |
549.3330363318701 ns/iter |
1.28 |
URITemplateRouter_Create |
29617.438468629316 ns/iter |
22869.17131187155 ns/iter |
1.30 |
URITemplateRouter_Match |
177.55526057454816 ns/iter |
129.1259841308235 ns/iter |
1.38 |
URITemplateRouter_Match_BasePath |
211.4439199119908 ns/iter |
155.42273781123487 ns/iter |
1.36 |
URITemplateRouterView_Restore |
8748.106379367739 ns/iter |
6925.852917712905 ns/iter |
1.26 |
URITemplateRouterView_Match |
144.89189732988953 ns/iter |
107.11027458701766 ns/iter |
1.35 |
URITemplateRouterView_Match_BasePath |
164.2285927521255 ns/iter |
120.59080342379262 ns/iter |
1.36 |
URITemplateRouterView_Arguments |
449.49470195864546 ns/iter |
347.34742936015857 ns/iter |
1.29 |
JSONL_Parse_Large |
9134496.285714231 ns/iter |
7452577.084210901 ns/iter |
1.23 |
JSONL_Parse_Large_GZIP |
10791723.800000979 ns/iter |
8639072.382715154 ns/iter |
1.25 |
HTML_Build_Table_100000 |
73586694.6666748 ns/iter |
58629004.91666778 ns/iter |
1.26 |
HTML_Render_Table_100000 |
5081168.313868678 ns/iter |
4511869.1401269175 ns/iter |
1.13 |
GZIP_Compress_ISO_Language_Set_3_Locations |
35484735.09999894 ns/iter |
27091129.53846216 ns/iter |
1.31 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4285521.607362505 ns/iter |
2955161.086065271 ns/iter |
1.45 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2084815.27678557 ns/iter |
1604553.0640734613 ns/iter |
1.30 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
276908.30063290015 ns/iter |
196660.5620438416 ns/iter |
1.41 |
JOSE_VerifySignature_RS256 |
63991.565531761255 ns/iter |
49436.62426642237 ns/iter |
1.29 |
JOSE_VerifySignature_ES512 |
2666380.022813898 ns/iter |
2163396.990740525 ns/iter |
1.23 |
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: d02ad29 | Previous: 4048ee6 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
5.131217857142799 ns/iter |
5.121755999998641 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
5.028980536834873 ns/iter |
4.957370535716369 ns/iter |
1.01 |
Regex_Period_Asterisk |
5.0144330000011905 ns/iter |
4.963467000002311 ns/iter |
1.01 |
Regex_Group_Period_Asterisk_Group |
5.031914999999572 ns/iter |
4.954514800213069 ns/iter |
1.02 |
Regex_Period_Plus |
4.967516000001524 ns/iter |
4.609099452968816 ns/iter |
1.08 |
Regex_Period |
4.910156000000825 ns/iter |
4.604308269203911 ns/iter |
1.07 |
Regex_Caret_Period_Plus_Dollar |
5.115150999999969 ns/iter |
4.603885054919539 ns/iter |
1.11 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
4.995926000001418 ns/iter |
4.6072908369006536 ns/iter |
1.08 |
Regex_Caret_Period_Asterisk_Dollar |
5.236571999998887 ns/iter |
4.953888000000006 ns/iter |
1.06 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
5.275767000002816 ns/iter |
4.975880357144595 ns/iter |
1.06 |
Regex_Caret_X_Hyphen |
10.461591917585249 ns/iter |
7.849805803569357 ns/iter |
1.33 |
Regex_Period_Md_Dollar |
60.062378435981515 ns/iter |
61.95933035714672 ns/iter |
0.97 |
Regex_Caret_Slash_Period_Asterisk |
9.264898437498305 ns/iter |
7.443026785714275 ns/iter |
1.24 |
Regex_Caret_Period_Range_Dollar |
6.554373999997551 ns/iter |
5.311798999996427 ns/iter |
1.23 |
Regex_Nested_Backtrack |
53.89760714288221 ns/iter |
67.31427678573709 ns/iter |
0.80 |
JSON_Array_Of_Objects_Unique |
497.50325396279874 ns/iter |
512.1602999997776 ns/iter |
0.97 |
JSON_Parse_1 |
8767.229910715863 ns/iter |
9674.81082673568 ns/iter |
0.91 |
JSON_Parse_Real |
17492.27293933176 ns/iter |
17749.05043794887 ns/iter |
0.99 |
JSON_Parse_Decimal |
11785.785714282936 ns/iter |
11369.403125002009 ns/iter |
1.04 |
JSON_Parse_Schema_ISO_Language |
7649030.000003323 ns/iter |
8140081.111110299 ns/iter |
0.94 |
JSON_Parse_Integer |
6081.4669642833705 ns/iter |
5842.1044642825245 ns/iter |
1.04 |
JSON_Parse_String_NonSSO_Plain |
8188.7600446454 ns/iter |
7697.437500000197 ns/iter |
1.06 |
JSON_Parse_String_SSO_Plain |
3672.5730684921873 ns/iter |
3515.449625803245 ns/iter |
1.04 |
JSON_Parse_String_Escape_Heavy |
22063.97026817934 ns/iter |
21222.63072369481 ns/iter |
1.04 |
JSON_Parse_Object_Short_Keys |
13137.726785714674 ns/iter |
13001.49821428574 ns/iter |
1.01 |
JSON_Parse_Object_Scalar_Properties |
6772.446428572363 ns/iter |
6676.908482141641 ns/iter |
1.01 |
JSON_Parse_Object_Array_Properties |
11564.168749998771 ns/iter |
11420.253927434142 ns/iter |
1.01 |
JSON_Parse_Object_Object_Properties |
11785.156249999318 ns/iter |
11622.071874995756 ns/iter |
1.01 |
JSON_Parse_Nested_Containers |
81376.39508924671 ns/iter |
82517.53046740743 ns/iter |
0.99 |
JSON_From_String_Copy |
63.98560714286207 ns/iter |
62.275866071429064 ns/iter |
1.03 |
JSON_From_String_Temporary |
57.96127999997225 ns/iter |
85.4197098214168 ns/iter |
0.68 |
JSON_Number_To_Double |
120.5346785714515 ns/iter |
143.87578125000084 ns/iter |
0.84 |
JSON_Object_At_Last_Key/8 |
7.232357142856114 ns/iter |
7.443683035712111 ns/iter |
0.97 |
JSON_Object_At_Last_Key/32 |
23.56799638875135 ns/iter |
24.762692857133775 ns/iter |
0.95 |
JSON_Object_At_Last_Key/128 |
91.70381696428365 ns/iter |
97.37203124998928 ns/iter |
0.94 |
JSON_Object_At_Last_Key/512 |
423.1205616482133 ns/iter |
436.4557499999933 ns/iter |
0.97 |
JSON_Fast_Hash_Helm_Chart_Lock |
66.61186607142814 ns/iter |
65.15204241068773 ns/iter |
1.02 |
JSON_Equality_Helm_Chart_Lock |
299.7717031505815 ns/iter |
291.6297799520267 ns/iter |
1.03 |
JSON_Divisible_By_Decimal |
300.9649708743888 ns/iter |
372.7357905828616 ns/iter |
0.81 |
JSON_String_Equal/10 |
15.093548370117428 ns/iter |
14.16934078496376 ns/iter |
1.07 |
JSON_String_Equal/100 |
16.349991071434392 ns/iter |
16.16907142856608 ns/iter |
1.01 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.5089357142860536 ns/iter |
2.17058593749897 ns/iter |
1.16 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
15.011694575837677 ns/iter |
14.423816964281857 ns/iter |
1.04 |
JSON_String_Fast_Hash/10 |
4.711325233729636 ns/iter |
4.603059385276086 ns/iter |
1.02 |
JSON_String_Fast_Hash/100 |
4.696432376554595 ns/iter |
4.623147331749482 ns/iter |
1.02 |
JSON_String_Key_Hash/10 |
5.334695000001375 ns/iter |
4.958074999999553 ns/iter |
1.08 |
JSON_String_Key_Hash/100 |
11.882708928575473 ns/iter |
10.940459374999989 ns/iter |
1.09 |
JSON_Object_Defines_Miss_Same_Length |
4.082950334822755 ns/iter |
4.26521952934497 ns/iter |
0.96 |
JSON_Object_Defines_Miss_Too_Small |
5.027451999999357 ns/iter |
4.983237499999404 ns/iter |
1.01 |
JSON_Object_Defines_Miss_Too_Large |
4.39668749999953 ns/iter |
4.251575489173158 ns/iter |
1.03 |
Pointer_Object_Traverse |
70.14650892857941 ns/iter |
69.09117187500361 ns/iter |
1.02 |
Pointer_Object_Try_Traverse |
71.0547544642789 ns/iter |
68.10769642860188 ns/iter |
1.04 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
160.3486830357984 ns/iter |
166.3893504278405 ns/iter |
0.96 |
Pointer_Walker_Schema_ISO_Language |
8567662.22222076 ns/iter |
9286326.66666696 ns/iter |
0.92 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
2434454.6184740653 ns/iter |
2446937.349397931 ns/iter |
0.99 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
3757940.000000067 ns/iter |
3646998.3957227124 ns/iter |
1.03 |
Pointer_Position_Tracker_Get_Deeply_Nested |
515.3796727843562 ns/iter |
545.1445312501286 ns/iter |
0.95 |
URITemplateRouter_Create |
40972.60170622369 ns/iter |
39866.8736579223 ns/iter |
1.03 |
URITemplateRouter_Match |
232.59546729489668 ns/iter |
222.16709375001642 ns/iter |
1.05 |
URITemplateRouter_Match_BasePath |
271.20738710756297 ns/iter |
247.73060714291466 ns/iter |
1.09 |
URITemplateRouterView_Restore |
32254.81648150141 ns/iter |
24308.86932065208 ns/iter |
1.33 |
URITemplateRouterView_Match |
179.4923463831604 ns/iter |
173.21470356344634 ns/iter |
1.04 |
URITemplateRouterView_Match_BasePath |
204.49493750007264 ns/iter |
197.0954372406989 ns/iter |
1.04 |
URITemplateRouterView_Arguments |
534.226071428634 ns/iter |
587.267499999809 ns/iter |
0.91 |
JSONL_Parse_Large |
32488628.571432598 ns/iter |
33253123.80952926 ns/iter |
0.98 |
JSONL_Parse_Large_GZIP |
33075876.19047765 ns/iter |
33154231.8181784 ns/iter |
1.00 |
HTML_Build_Table_100000 |
90329777.77774756 ns/iter |
91672042.85716124 ns/iter |
0.99 |
HTML_Render_Table_100000 |
8207694.666665096 ns/iter |
8367114.444445178 ns/iter |
0.98 |
GZIP_Compress_ISO_Language_Set_3_Locations |
36309899.99999201 ns/iter |
37802410.526302606 ns/iter |
0.96 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
10110209.333336873 ns/iter |
10587943.750003604 ns/iter |
0.95 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2111747.8124992317 ns/iter |
2287645.8193988646 ns/iter |
0.92 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
619657.142857071 ns/iter |
598881.517857259 ns/iter |
1.03 |
JOSE_VerifySignature_RS256 |
21257.660611686028 ns/iter |
23758.592857153155 ns/iter |
0.89 |
JOSE_VerifySignature_ES512 |
1536041.3654618978 ns/iter |
1518441.5178574845 ns/iter |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
See: json-schema-org/JSON-Schema-Test-Suite#945
Signed-off-by: Juan Cruz Viotti jv@jviotti.com