Add ECDSA verify support#2502
Conversation
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
🤖 Augment PR SummarySummary: This PR adds ECDSA signature verification support alongside the existing RSA verifiers. Changes:
Technical Notes: The reference backend validates scalar ranges and curve membership per FIPS 186-4, while platform backends rely on native key parsing/verification primitives. 🤖 Was this summary useful? React with 👍 or 👎 |
| return false; | ||
| } | ||
|
|
||
| const auto public_x{bignum_from_bytes(coordinate_x)}; |
There was a problem hiding this comment.
At src/core/crypto/crypto_verify_other.cc:343, bignum_from_bytes(coordinate_x/y) will silently truncate extremely long inputs (it stops at Bignum::capacity), which can make malformed public keys be interpreted as a different smaller point and inconsistently accepted. Consider bounding/normalizing coordinate lengths (e.g., reject inputs longer than the curve field size) so oversized coordinates can’t be truncated into a valid key.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| const std::string_view coordinate_x, | ||
| const std::string_view coordinate_y) -> EVP_PKEY * { | ||
| const auto width{curve_field_bytes(curve)}; | ||
| if (coordinate_x.size() > width || coordinate_y.size() > width) { |
There was a problem hiding this comment.
At src/core/crypto/crypto_verify_openssl.cc:175, EC coordinates are rejected when size() > width, unlike the RSA path which strips leading zeros before sizing, so callers providing left-padded coordinates may fail on OpenSSL/Apple/Windows while the reference backend may accept them. Consider normalizing (e.g., stripping leading 0x00 bytes) before applying the width check to keep backend behavior consistent.
Severity: low
Other Locations
src/core/crypto/crypto_verify_apple.cc:139src/core/crypto/crypto_verify_windows.cc:226
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
|
|
||
| std::string bytes; | ||
| bytes.reserve(hex.size() / 2); | ||
| for (std::size_t index = 0; index + 1 < hex.size(); index += 2) { |
There was a problem hiding this comment.
At src/core/crypto/crypto_bignum.h:78, bignum_from_hex silently ignores a trailing nibble when the input has odd length, which could yield incorrect values with no signal if an odd-length hex string is ever passed. It also maps any non-[0-9a-fA-F] character through the “uppercase” branch, which can produce out-of-range nibbles rather than rejecting malformed input.
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
There was a problem hiding this comment.
Benchmark (macos/llvm)
Details
| Benchmark suite | Current: f6f4f59 | Previous: 8411f99 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.574073452418214 ns/iter |
1.6970305614946273 ns/iter |
0.93 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.6028951316150386 ns/iter |
1.6983903121094654 ns/iter |
0.94 |
Regex_Period_Asterisk |
1.6406305530682699 ns/iter |
1.850491560167717 ns/iter |
0.89 |
Regex_Group_Period_Asterisk_Group |
1.5711544605956171 ns/iter |
1.835685268468358 ns/iter |
0.86 |
Regex_Period_Plus |
1.8819693559779336 ns/iter |
2.133284849238584 ns/iter |
0.88 |
Regex_Period |
1.8833167654299598 ns/iter |
2.306558871472046 ns/iter |
0.82 |
Regex_Caret_Period_Plus_Dollar |
1.8820248218869324 ns/iter |
2.398681235743347 ns/iter |
0.78 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.934014763755398 ns/iter |
2.384417041591825 ns/iter |
0.81 |
Regex_Caret_Period_Asterisk_Dollar |
1.5667044070056693 ns/iter |
1.7246540199830738 ns/iter |
0.91 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
1.5682719933471208 ns/iter |
1.701931002859553 ns/iter |
0.92 |
Regex_Caret_X_Hyphen |
5.66465286419748 ns/iter |
6.118724373863637 ns/iter |
0.93 |
Regex_Period_Md_Dollar |
15.855092084631217 ns/iter |
17.165696951311507 ns/iter |
0.92 |
Regex_Caret_Slash_Period_Asterisk |
4.101642211154547 ns/iter |
4.494449064758135 ns/iter |
0.91 |
Regex_Caret_Period_Range_Dollar |
1.88303222928935 ns/iter |
2.085794924524431 ns/iter |
0.90 |
Regex_Nested_Backtrack |
24.747101026574445 ns/iter |
24.703886329891432 ns/iter |
1.00 |
JSON_Array_Of_Objects_Unique |
315.0989818880177 ns/iter |
338.027908833231 ns/iter |
0.93 |
JSON_Parse_1 |
3367.838751788768 ns/iter |
3650.6944240901703 ns/iter |
0.92 |
JSON_Parse_Real |
5556.692902249433 ns/iter |
5194.613543739464 ns/iter |
1.07 |
JSON_Parse_Decimal |
5343.0302695573255 ns/iter |
5480.569104450074 ns/iter |
0.97 |
JSON_Parse_Schema_ISO_Language |
3067212.982143376 ns/iter |
5051963.874125631 ns/iter |
0.61 |
JSON_Parse_Integer |
2787.39055669146 ns/iter |
3178.56577506555 ns/iter |
0.88 |
JSON_Parse_String_NonSSO_Plain |
3468.3731243249395 ns/iter |
3581.973902022428 ns/iter |
0.97 |
JSON_Parse_String_SSO_Plain |
1665.7408214603172 ns/iter |
1813.7683371257467 ns/iter |
0.92 |
JSON_Parse_String_Escape_Heavy |
15230.358447789005 ns/iter |
19111.960015078683 ns/iter |
0.80 |
JSON_Parse_Object_Short_Keys |
5163.728481359631 ns/iter |
5337.879948154713 ns/iter |
0.97 |
JSON_Parse_Object_Scalar_Properties |
2529.339322971086 ns/iter |
2696.508240356872 ns/iter |
0.94 |
JSON_Parse_Object_Array_Properties |
3259.6688102305775 ns/iter |
3500.013487534388 ns/iter |
0.93 |
JSON_Parse_Object_Object_Properties |
3333.5266862412564 ns/iter |
3515.159080732258 ns/iter |
0.95 |
JSON_Parse_Nested_Containers |
27037.367515634814 ns/iter |
27813.80239401992 ns/iter |
0.97 |
JSON_From_String_Copy |
22.62968062122471 ns/iter |
25.790287453088897 ns/iter |
0.88 |
JSON_From_String_Temporary |
18.020518233815377 ns/iter |
23.142323894318157 ns/iter |
0.78 |
JSON_Number_To_Double |
30.628634428626516 ns/iter |
33.558091230046955 ns/iter |
0.91 |
JSON_Object_At_Last_Key/8 |
3.565159673481231 ns/iter |
3.7245152923580616 ns/iter |
0.96 |
JSON_Object_At_Last_Key/32 |
11.139152239875358 ns/iter |
11.816601902379514 ns/iter |
0.94 |
JSON_Object_At_Last_Key/128 |
50.47179999999116 ns/iter |
54.159448137188 ns/iter |
0.93 |
JSON_Object_At_Last_Key/512 |
175.6697238639299 ns/iter |
186.60940275579563 ns/iter |
0.94 |
JSON_Fast_Hash_Helm_Chart_Lock |
58.21895556714044 ns/iter |
58.83612322321609 ns/iter |
0.99 |
JSON_Equality_Helm_Chart_Lock |
123.70175386121993 ns/iter |
134.42047703879595 ns/iter |
0.92 |
JSON_Divisible_By_Decimal |
161.55492788525018 ns/iter |
182.38769276615272 ns/iter |
0.89 |
JSON_String_Equal/10 |
6.276134369810525 ns/iter |
6.8493938974860855 ns/iter |
0.92 |
JSON_String_Equal/100 |
6.257897020183749 ns/iter |
7.728017298826804 ns/iter |
0.81 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.6923287483060706 ns/iter |
0.8998721748663095 ns/iter |
0.77 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.0334559714298814 ns/iter |
3.6636570426561232 ns/iter |
0.83 |
JSON_String_Fast_Hash/10 |
2.197522503447951 ns/iter |
2.6709195827878767 ns/iter |
0.82 |
JSON_String_Fast_Hash/100 |
1.8908731493187052 ns/iter |
2.0640888494185363 ns/iter |
0.92 |
JSON_String_Key_Hash/10 |
1.2559171687323099 ns/iter |
1.6726980112937704 ns/iter |
0.75 |
JSON_String_Key_Hash/100 |
1.9847438580946444 ns/iter |
2.163512278908338 ns/iter |
0.92 |
JSON_Object_Defines_Miss_Same_Length |
2.1954674174423365 ns/iter |
2.4910596669599583 ns/iter |
0.88 |
JSON_Object_Defines_Miss_Too_Small |
2.3122992418889416 ns/iter |
2.371766425846735 ns/iter |
0.97 |
JSON_Object_Defines_Miss_Too_Large |
2.19777277124019 ns/iter |
2.3261812730916054 ns/iter |
0.94 |
Pointer_Object_Traverse |
12.772735258672544 ns/iter |
13.889500490153702 ns/iter |
0.92 |
Pointer_Object_Try_Traverse |
21.661819734695793 ns/iter |
23.23428495780857 ns/iter |
0.93 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
145.2459653053041 ns/iter |
161.80645976248334 ns/iter |
0.90 |
Pointer_Walker_Schema_ISO_Language |
1953152.4305553678 ns/iter |
2513146.22471923 ns/iter |
0.78 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
805113.3948545152 ns/iter |
1032304.6113207336 ns/iter |
0.78 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1025832.9740636772 ns/iter |
1216860.6736476256 ns/iter |
0.84 |
Pointer_Position_Tracker_Get_Deeply_Nested |
330.75617655964703 ns/iter |
406.32256471547606 ns/iter |
0.81 |
URITemplateRouter_Create |
21485.05373152517 ns/iter |
23326.731777315017 ns/iter |
0.92 |
URITemplateRouter_Match |
150.660127221928 ns/iter |
160.9285761330307 ns/iter |
0.94 |
URITemplateRouter_Match_BasePath |
177.5679224676386 ns/iter |
191.6961994081637 ns/iter |
0.93 |
URITemplateRouterView_Restore |
9549.196482568603 ns/iter |
9845.466301942917 ns/iter |
0.97 |
URITemplateRouterView_Match |
122.2245331889383 ns/iter |
131.842807326283 ns/iter |
0.93 |
URITemplateRouterView_Match_BasePath |
139.3009634904687 ns/iter |
151.17568879261592 ns/iter |
0.92 |
URITemplateRouterView_Arguments |
385.39588452368 ns/iter |
394.86007487314504 ns/iter |
0.98 |
JSONL_Parse_Large |
11470652.327869205 ns/iter |
12690845.13207529 ns/iter |
0.90 |
JSONL_Parse_Large_GZIP |
12224395.473682754 ns/iter |
14019347.749998936 ns/iter |
0.87 |
HTML_Build_Table_100000 |
59849075.81817176 ns/iter |
66673912.49999355 ns/iter |
0.90 |
HTML_Render_Table_100000 |
2264173.3870968693 ns/iter |
3893917.7807485657 ns/iter |
0.58 |
GZIP_Compress_ISO_Language_Set_3_Locations |
24605855.642854683 ns/iter |
26522930.55555472 ns/iter |
0.93 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4695937.919462651 ns/iter |
5503860.1190477805 ns/iter |
0.85 |
GZIP_Compress_ISO_Language_Set_3_Schema |
1423415.1606425405 ns/iter |
1510532.9383983167 ns/iter |
0.94 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
268121.29128353175 ns/iter |
272016.85560859984 ns/iter |
0.99 |
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: f6f4f59 | Previous: 8411f99 | Ratio |
|---|---|---|---|
GZIP_Compress_ISO_Language_Set_3_Locations |
39285008.4999989 ns/iter |
36392756.63157916 ns/iter |
1.08 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4030183.666666995 ns/iter |
4368020.025000163 ns/iter |
0.92 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2265530.304207106 ns/iter |
2012376.0517241533 ns/iter |
1.13 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
328887.2678721337 ns/iter |
381083.6356715848 ns/iter |
0.86 |
HTML_Build_Table_100000 |
74844716.5000016 ns/iter |
61028860.63636313 ns/iter |
1.23 |
HTML_Render_Table_100000 |
1959219.8820222996 ns/iter |
1908836.7127371537 ns/iter |
1.03 |
JSONL_Parse_Large |
12383246.228070851 ns/iter |
12899174.592590682 ns/iter |
0.96 |
JSONL_Parse_Large_GZIP |
13850837.88235373 ns/iter |
14394661.714284351 ns/iter |
0.96 |
URITemplateRouter_Create |
29849.10702054743 ns/iter |
31229.544090224445 ns/iter |
0.96 |
URITemplateRouter_Match |
144.62167377627594 ns/iter |
149.0007230853262 ns/iter |
0.97 |
URITemplateRouter_Match_BasePath |
167.2316164999514 ns/iter |
170.57446647780662 ns/iter |
0.98 |
URITemplateRouterView_Restore |
8657.340522287375 ns/iter |
7638.554198896385 ns/iter |
1.13 |
URITemplateRouterView_Match |
124.63008556385962 ns/iter |
122.47585414583364 ns/iter |
1.02 |
URITemplateRouterView_Match_BasePath |
142.94896831608133 ns/iter |
142.74321562769998 ns/iter |
1.00 |
URITemplateRouterView_Arguments |
459.3020952390858 ns/iter |
469.924099863803 ns/iter |
0.98 |
Pointer_Object_Traverse |
29.473965282543265 ns/iter |
29.64469326320091 ns/iter |
0.99 |
Pointer_Object_Try_Traverse |
22.72283728223581 ns/iter |
23.077448269601575 ns/iter |
0.98 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
152.46934889389237 ns/iter |
147.72895532542964 ns/iter |
1.03 |
Pointer_Walker_Schema_ISO_Language |
1871767.1013334135 ns/iter |
1906172.7903224386 ns/iter |
0.98 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1537891.2483516454 ns/iter |
1526779.9118944998 ns/iter |
1.01 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1686664.1835746665 ns/iter |
1689928.3764987057 ns/iter |
1.00 |
Pointer_Position_Tracker_Get_Deeply_Nested |
426.78735786551056 ns/iter |
592.080404137277 ns/iter |
0.72 |
JSON_Array_Of_Objects_Unique |
391.09280427344333 ns/iter |
373.14036373544417 ns/iter |
1.05 |
JSON_Parse_1 |
7804.648994718264 ns/iter |
7849.598531903025 ns/iter |
0.99 |
JSON_Parse_Real |
6675.667494102724 ns/iter |
6617.862760068885 ns/iter |
1.01 |
JSON_Parse_Decimal |
9668.794635239468 ns/iter |
11325.842122253773 ns/iter |
0.85 |
JSON_Parse_Schema_ISO_Language |
5144154.9701496065 ns/iter |
5188992.340740865 ns/iter |
0.99 |
JSON_Parse_Integer |
4899.973655323442 ns/iter |
4891.134453899053 ns/iter |
1.00 |
JSON_Parse_String_NonSSO_Plain |
8663.795343091098 ns/iter |
8605.373258227164 ns/iter |
1.01 |
JSON_Parse_String_SSO_Plain |
3806.8971261463735 ns/iter |
3988.8996028781917 ns/iter |
0.95 |
JSON_Parse_String_Escape_Heavy |
19375.799524587703 ns/iter |
20840.36094727354 ns/iter |
0.93 |
JSON_Parse_Object_Short_Keys |
11542.302547349107 ns/iter |
14193.29860483622 ns/iter |
0.81 |
JSON_Parse_Object_Scalar_Properties |
5859.765295433941 ns/iter |
5865.952817868105 ns/iter |
1.00 |
JSON_Parse_Object_Array_Properties |
9524.497519115293 ns/iter |
8932.93838290071 ns/iter |
1.07 |
JSON_Parse_Object_Object_Properties |
9095.509377392898 ns/iter |
9556.976058781705 ns/iter |
0.95 |
JSON_Parse_Nested_Containers |
74970.17499731333 ns/iter |
73472.58853622468 ns/iter |
1.02 |
JSON_From_String_Copy |
20.826493741104372 ns/iter |
18.40886587994982 ns/iter |
1.13 |
JSON_From_String_Temporary |
16.72446194898763 ns/iter |
15.466879642234483 ns/iter |
1.08 |
JSON_Number_To_Double |
20.069175265851563 ns/iter |
21.928182212249 ns/iter |
0.92 |
JSON_Object_At_Last_Key/8 |
6.6815628507476 ns/iter |
5.928317667554644 ns/iter |
1.13 |
JSON_Object_At_Last_Key/32 |
23.615144281218242 ns/iter |
21.97473446642891 ns/iter |
1.07 |
JSON_Object_At_Last_Key/128 |
91.11035197231799 ns/iter |
91.84509930085528 ns/iter |
0.99 |
JSON_Object_At_Last_Key/512 |
379.4920291644544 ns/iter |
424.91721942626117 ns/iter |
0.89 |
JSON_Fast_Hash_Helm_Chart_Lock |
61.24761656547917 ns/iter |
66.79635416390428 ns/iter |
0.92 |
JSON_Equality_Helm_Chart_Lock |
164.28826714463227 ns/iter |
173.10846640561212 ns/iter |
0.95 |
JSON_Divisible_By_Decimal |
232.38767754623936 ns/iter |
237.59764868729047 ns/iter |
0.98 |
JSON_String_Equal/10 |
5.320307165118202 ns/iter |
5.651714357120202 ns/iter |
0.94 |
JSON_String_Equal/100 |
6.030327127227101 ns/iter |
6.277352397427419 ns/iter |
0.96 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.7118522633325026 ns/iter |
0.6250117153840461 ns/iter |
1.14 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
22.15092412567246 ns/iter |
25.197482952286386 ns/iter |
0.88 |
JSON_String_Fast_Hash/10 |
1.0566784394805073 ns/iter |
0.9349977314600336 ns/iter |
1.13 |
JSON_String_Fast_Hash/100 |
1.055200120294725 ns/iter |
0.9350878018608797 ns/iter |
1.13 |
JSON_String_Key_Hash/10 |
1.4096266445079217 ns/iter |
1.2527127217554734 ns/iter |
1.13 |
JSON_String_Key_Hash/100 |
14.757999860278849 ns/iter |
12.448014104385 ns/iter |
1.19 |
JSON_Object_Defines_Miss_Same_Length |
3.8938029435203245 ns/iter |
3.440893834963793 ns/iter |
1.13 |
JSON_Object_Defines_Miss_Too_Small |
3.868864820653916 ns/iter |
3.42548189451714 ns/iter |
1.13 |
JSON_Object_Defines_Miss_Too_Large |
3.5201297172117303 ns/iter |
3.113774582932944 ns/iter |
1.13 |
Regex_Lower_S_Or_Upper_S_Asterisk |
1.0559741660506572 ns/iter |
0.9356740157162162 ns/iter |
1.13 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
0.7038765872064621 ns/iter |
0.623402231419082 ns/iter |
1.13 |
Regex_Period_Asterisk |
0.7034202067158161 ns/iter |
0.6259705501725488 ns/iter |
1.12 |
Regex_Group_Period_Asterisk_Group |
1.05625309820112 ns/iter |
0.9348338076235613 ns/iter |
1.13 |
Regex_Period_Plus |
1.0559218760941662 ns/iter |
0.9351628562799525 ns/iter |
1.13 |
Regex_Period |
0.7036007747370765 ns/iter |
0.6238390813565663 ns/iter |
1.13 |
Regex_Caret_Period_Plus_Dollar |
0.7040005827381396 ns/iter |
0.6234877668345159 ns/iter |
1.13 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
1.0546630494950777 ns/iter |
0.9343864076419355 ns/iter |
1.13 |
Regex_Caret_Period_Asterisk_Dollar |
1.0555338680592994 ns/iter |
0.9339523045894068 ns/iter |
1.13 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
0.7043882090247917 ns/iter |
0.6263578515488024 ns/iter |
1.12 |
Regex_Caret_X_Hyphen |
4.220004380941901 ns/iter |
4.050585845609571 ns/iter |
1.04 |
Regex_Period_Md_Dollar |
34.301347599600106 ns/iter |
29.802072350843794 ns/iter |
1.15 |
Regex_Caret_Slash_Period_Asterisk |
3.8678750587513986 ns/iter |
4.359073122865927 ns/iter |
0.89 |
Regex_Caret_Period_Range_Dollar |
0.8397717895175058 ns/iter |
0.7848542217743092 ns/iter |
1.07 |
Regex_Nested_Backtrack |
40.307518548154036 ns/iter |
38.66226183355553 ns/iter |
1.04 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
3 issues found across 11 files
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
There was a problem hiding this comment.
Benchmark (linux/llvm)
Details
| Benchmark suite | Current: f6f4f59 | Previous: 8411f99 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.211780783115434 ns/iter |
2.461824680338272 ns/iter |
0.90 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.17954892908446 ns/iter |
2.46284090194386 ns/iter |
0.88 |
Regex_Period_Asterisk |
2.1798481396940903 ns/iter |
2.46092267043048 ns/iter |
0.89 |
Regex_Group_Period_Asterisk_Group |
2.180892155831397 ns/iter |
2.4668192369716913 ns/iter |
0.88 |
Regex_Period_Plus |
2.6185422960928433 ns/iter |
3.8665524703149883 ns/iter |
0.68 |
Regex_Period |
2.1795003027175714 ns/iter |
3.517166936487433 ns/iter |
0.62 |
Regex_Caret_Period_Plus_Dollar |
2.1794443326674697 ns/iter |
3.5157732220403366 ns/iter |
0.62 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.4904836673617097 ns/iter |
3.867081156232954 ns/iter |
0.64 |
Regex_Caret_Period_Asterisk_Dollar |
2.4901150702387245 ns/iter |
2.8131506185609365 ns/iter |
0.89 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.186642021669891 ns/iter |
2.462282460168908 ns/iter |
0.89 |
Regex_Caret_X_Hyphen |
6.562339289879159 ns/iter |
6.957287484057991 ns/iter |
0.94 |
Regex_Period_Md_Dollar |
27.640588209039194 ns/iter |
26.59986914191929 ns/iter |
1.04 |
Regex_Caret_Slash_Period_Asterisk |
6.226092031006202 ns/iter |
7.670732976436467 ns/iter |
0.81 |
Regex_Caret_Period_Range_Dollar |
3.0567517217730114 ns/iter |
3.516068701699843 ns/iter |
0.87 |
Regex_Nested_Backtrack |
36.964858378003086 ns/iter |
37.6181693824287 ns/iter |
0.98 |
JSON_Array_Of_Objects_Unique |
478.1574423337202 ns/iter |
499.34284369430657 ns/iter |
0.96 |
JSON_Parse_1 |
4733.092806811578 ns/iter |
4558.409577884928 ns/iter |
1.04 |
JSON_Parse_Real |
5197.714663796353 ns/iter |
5152.058785572606 ns/iter |
1.01 |
JSON_Parse_Decimal |
7593.881799640367 ns/iter |
7645.749716318562 ns/iter |
0.99 |
JSON_Parse_Schema_ISO_Language |
3429816.686274664 ns/iter |
3515326.999999747 ns/iter |
0.98 |
JSON_Parse_Integer |
3705.4168119506544 ns/iter |
3894.6080866162233 ns/iter |
0.95 |
JSON_Parse_String_NonSSO_Plain |
4910.903079286034 ns/iter |
5007.187382162755 ns/iter |
0.98 |
JSON_Parse_String_SSO_Plain |
2668.758217259726 ns/iter |
2725.76982716473 ns/iter |
0.98 |
JSON_Parse_String_Escape_Heavy |
14391.323752349823 ns/iter |
14505.385910288227 ns/iter |
0.99 |
JSON_Parse_Object_Short_Keys |
10616.380346225269 ns/iter |
7755.037414363814 ns/iter |
1.37 |
JSON_Parse_Object_Scalar_Properties |
4129.317748851407 ns/iter |
3983.8462858373555 ns/iter |
1.04 |
JSON_Parse_Object_Array_Properties |
5357.2394281167635 ns/iter |
5496.0532919790085 ns/iter |
0.97 |
JSON_Parse_Object_Object_Properties |
5425.340517508477 ns/iter |
5605.716199503482 ns/iter |
0.97 |
JSON_Parse_Nested_Containers |
44465.100330405905 ns/iter |
44881.73720093454 ns/iter |
0.99 |
JSON_From_String_Copy |
19.661301189079516 ns/iter |
20.414131471944316 ns/iter |
0.96 |
JSON_From_String_Temporary |
17.22186459892771 ns/iter |
18.35042384824276 ns/iter |
0.94 |
JSON_Number_To_Double |
24.047924431393565 ns/iter |
22.88286052208179 ns/iter |
1.05 |
JSON_Object_At_Last_Key/8 |
3.7220815167057335 ns/iter |
3.7584189632041007 ns/iter |
0.99 |
JSON_Object_At_Last_Key/32 |
11.96293626183819 ns/iter |
13.055669789290791 ns/iter |
0.92 |
JSON_Object_At_Last_Key/128 |
48.26965220249817 ns/iter |
46.802860863108506 ns/iter |
1.03 |
JSON_Object_At_Last_Key/512 |
382.44661172002174 ns/iter |
366.8723066434402 ns/iter |
1.04 |
JSON_Fast_Hash_Helm_Chart_Lock |
64.63778575768629 ns/iter |
68.60569978933101 ns/iter |
0.94 |
JSON_Equality_Helm_Chart_Lock |
191.90508312015874 ns/iter |
188.7892903898888 ns/iter |
1.02 |
JSON_Divisible_By_Decimal |
253.7823411722498 ns/iter |
257.8363966662517 ns/iter |
0.98 |
JSON_String_Equal/10 |
6.542153226142671 ns/iter |
6.343835062779966 ns/iter |
1.03 |
JSON_String_Equal/100 |
7.189268983677388 ns/iter |
7.064758342499649 ns/iter |
1.02 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9352416689496947 ns/iter |
1.0547626486292438 ns/iter |
0.89 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.928225661514098 ns/iter |
23.90554396405904 ns/iter |
0.62 |
JSON_String_Fast_Hash/10 |
2.184054597754384 ns/iter |
2.1113387709103018 ns/iter |
1.03 |
JSON_String_Fast_Hash/100 |
2.1802338310697817 ns/iter |
2.1118085623740925 ns/iter |
1.03 |
JSON_String_Key_Hash/10 |
2.747894969280242 ns/iter |
2.463853417212768 ns/iter |
1.12 |
JSON_String_Key_Hash/100 |
9.100279283659036 ns/iter |
8.097103361089149 ns/iter |
1.12 |
JSON_Object_Defines_Miss_Same_Length |
2.7263997214069717 ns/iter |
2.939854991762456 ns/iter |
0.93 |
JSON_Object_Defines_Miss_Too_Small |
3.7365394602723403 ns/iter |
4.222277036754933 ns/iter |
0.88 |
JSON_Object_Defines_Miss_Too_Large |
2.7578828957575685 ns/iter |
3.0051706117930075 ns/iter |
0.92 |
Pointer_Object_Traverse |
24.15816907155888 ns/iter |
29.504205616949363 ns/iter |
0.82 |
Pointer_Object_Try_Traverse |
30.329786809642325 ns/iter |
34.168732574313125 ns/iter |
0.89 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
224.7982935617939 ns/iter |
186.09150700281072 ns/iter |
1.21 |
Pointer_Walker_Schema_ISO_Language |
1812112.6649351607 ns/iter |
1825740.0103895233 ns/iter |
0.99 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1284916.055453042 ns/iter |
1266181.860253911 ns/iter |
1.01 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1663240.9738716166 ns/iter |
2166329.040498406 ns/iter |
0.77 |
Pointer_Position_Tracker_Get_Deeply_Nested |
428.8617048364253 ns/iter |
744.3026739249203 ns/iter |
0.58 |
URITemplateRouter_Create |
32477.430877388222 ns/iter |
29958.09541871152 ns/iter |
1.08 |
URITemplateRouter_Match |
179.68704792147892 ns/iter |
183.06352260900678 ns/iter |
0.98 |
URITemplateRouter_Match_BasePath |
212.89569072544683 ns/iter |
214.94426352548453 ns/iter |
0.99 |
URITemplateRouterView_Restore |
7675.586979859369 ns/iter |
8787.18384685525 ns/iter |
0.87 |
URITemplateRouterView_Match |
145.18302435737485 ns/iter |
146.06182149249614 ns/iter |
0.99 |
URITemplateRouterView_Match_BasePath |
164.2187850942115 ns/iter |
166.94395436835657 ns/iter |
0.98 |
URITemplateRouterView_Arguments |
447.03435493454344 ns/iter |
450.2682542000326 ns/iter |
0.99 |
JSONL_Parse_Large |
9639753.513888473 ns/iter |
9042778.935896678 ns/iter |
1.07 |
JSONL_Parse_Large_GZIP |
11226940.080645464 ns/iter |
10678164.060605563 ns/iter |
1.05 |
HTML_Build_Table_100000 |
68395867.69999641 ns/iter |
72654000.70000395 ns/iter |
0.94 |
HTML_Render_Table_100000 |
5225725.390977958 ns/iter |
5544116.523809508 ns/iter |
0.94 |
GZIP_Compress_ISO_Language_Set_3_Locations |
33467913.61904945 ns/iter |
35725685.799997106 ns/iter |
0.94 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4200203.269461471 ns/iter |
4296787.527607299 ns/iter |
0.98 |
GZIP_Compress_ISO_Language_Set_3_Schema |
1888066.5013478335 ns/iter |
2138285.048780531 ns/iter |
0.88 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
352206.8801611584 ns/iter |
276910.4849236012 ns/iter |
1.27 |
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: f6f4f59 | Previous: 8411f99 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
5.0777474118463 ns/iter |
2.4648182142860673 ns/iter |
2.06 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
5.187209999999141 ns/iter |
2.3988984348225104 ns/iter |
2.16 |
Regex_Period_Asterisk |
5.019423214288768 ns/iter |
2.453512499999988 ns/iter |
2.05 |
Regex_Group_Period_Asterisk_Group |
5.017808081476541 ns/iter |
2.3955802221448077 ns/iter |
2.09 |
Regex_Period_Plus |
5.021657478798629 ns/iter |
2.5163196428569075 ns/iter |
2.00 |
Regex_Period |
5.02042000000074 ns/iter |
2.6321103771138317 ns/iter |
1.91 |
Regex_Caret_Period_Plus_Dollar |
5.0172410000004675 ns/iter |
2.5291171428575256 ns/iter |
1.98 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
5.016403999998147 ns/iter |
2.651640644953235 ns/iter |
1.89 |
Regex_Caret_Period_Asterisk_Dollar |
5.017469642857415 ns/iter |
2.457796785713689 ns/iter |
2.04 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
5.014605000001211 ns/iter |
2.427318077648505 ns/iter |
2.07 |
Regex_Caret_X_Hyphen |
8.156117187501723 ns/iter |
5.873552678571465 ns/iter |
1.39 |
Regex_Period_Md_Dollar |
44.44911889887582 ns/iter |
29.961422789568875 ns/iter |
1.48 |
Regex_Caret_Slash_Period_Asterisk |
7.847751116071119 ns/iter |
5.87276799999927 ns/iter |
1.34 |
Regex_Caret_Period_Range_Dollar |
5.644833000001199 ns/iter |
2.6822421627837905 ns/iter |
2.10 |
Regex_Nested_Backtrack |
57.68490178569762 ns/iter |
40.855106350742304 ns/iter |
1.41 |
JSON_Array_Of_Objects_Unique |
477.7671138370866 ns/iter |
393.32126116077757 ns/iter |
1.21 |
JSON_Parse_1 |
8834.023062399145 ns/iter |
7615.070312501716 ns/iter |
1.16 |
JSON_Parse_Real |
16082.890956867139 ns/iter |
12145.544642858598 ns/iter |
1.32 |
JSON_Parse_Decimal |
11890.680357144642 ns/iter |
9384.339802054978 ns/iter |
1.27 |
JSON_Parse_Schema_ISO_Language |
7346352.222222978 ns/iter |
7848776.000000726 ns/iter |
0.94 |
JSON_Parse_Integer |
6117.650892857032 ns/iter |
4448.432513609104 ns/iter |
1.38 |
JSON_Parse_String_NonSSO_Plain |
7732.550223213 ns/iter |
6464.079464285939 ns/iter |
1.20 |
JSON_Parse_String_SSO_Plain |
3635.791111133117 ns/iter |
2871.354298502813 ns/iter |
1.27 |
JSON_Parse_String_Escape_Heavy |
21556.75624999276 ns/iter |
22950.496428571958 ns/iter |
0.94 |
JSON_Parse_Object_Short_Keys |
13229.467857148133 ns/iter |
9250.239955357185 ns/iter |
1.43 |
JSON_Parse_Object_Scalar_Properties |
6806.669642855923 ns/iter |
4917.0170000002145 ns/iter |
1.38 |
JSON_Parse_Object_Array_Properties |
11577.351562500837 ns/iter |
8819.31808035625 ns/iter |
1.31 |
JSON_Parse_Object_Object_Properties |
11789.566071424166 ns/iter |
8907.395502697453 ns/iter |
1.32 |
JSON_Parse_Nested_Containers |
78737.26562499834 ns/iter |
65721.2678571487 ns/iter |
1.20 |
JSON_From_String_Copy |
63.97466071429595 ns/iter |
47.528157310899324 ns/iter |
1.35 |
JSON_From_String_Temporary |
58.000250000012386 ns/iter |
52.88227678572558 ns/iter |
1.10 |
JSON_Number_To_Double |
119.30274999997437 ns/iter |
87.9724514297926 ns/iter |
1.36 |
JSON_Object_At_Last_Key/8 |
7.22068526785437 ns/iter |
6.779270089286423 ns/iter |
1.07 |
JSON_Object_At_Last_Key/32 |
23.238923847789426 ns/iter |
20.90932505682177 ns/iter |
1.11 |
JSON_Object_At_Last_Key/128 |
89.0024290623937 ns/iter |
93.06509852388972 ns/iter |
0.96 |
JSON_Object_At_Last_Key/512 |
422.34292536616846 ns/iter |
318.0864732142043 ns/iter |
1.33 |
JSON_Fast_Hash_Helm_Chart_Lock |
63.993446428582956 ns/iter |
48.37623991911273 ns/iter |
1.32 |
JSON_Equality_Helm_Chart_Lock |
303.78922725566855 ns/iter |
257.9363571428368 ns/iter |
1.18 |
JSON_Divisible_By_Decimal |
295.3437281983932 ns/iter |
272.0016039285084 ns/iter |
1.09 |
JSON_String_Equal/10 |
15.685526785722864 ns/iter |
11.144835937500375 ns/iter |
1.41 |
JSON_String_Equal/100 |
16.96143024355201 ns/iter |
13.78054681347762 ns/iter |
1.23 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.511792499998527 ns/iter |
1.1710839062502032 ns/iter |
2.14 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.189409981300031 ns/iter |
9.636133885552043 ns/iter |
1.47 |
JSON_String_Fast_Hash/10 |
5.0165400000014415 ns/iter |
2.350789617912525 ns/iter |
2.13 |
JSON_String_Fast_Hash/100 |
5.011574107141671 ns/iter |
2.346075332203222 ns/iter |
2.14 |
JSON_String_Key_Hash/10 |
5.331082999996397 ns/iter |
2.9176280344116465 ns/iter |
1.83 |
JSON_String_Key_Hash/100 |
11.862358928575695 ns/iter |
7.920676339284886 ns/iter |
1.50 |
JSON_Object_Defines_Miss_Same_Length |
5.141318999999385 ns/iter |
4.926117969848437 ns/iter |
1.04 |
JSON_Object_Defines_Miss_Too_Small |
4.0793945312524365 ns/iter |
4.642787287149829 ns/iter |
0.88 |
JSON_Object_Defines_Miss_Too_Large |
4.077738444782987 ns/iter |
3.5066256864847025 ns/iter |
1.16 |
Pointer_Object_Traverse |
67.34024553572178 ns/iter |
44.40937616599021 ns/iter |
1.52 |
Pointer_Object_Try_Traverse |
67.46545535715346 ns/iter |
50.25286104741447 ns/iter |
1.34 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
182.82283590327864 ns/iter |
187.19790064267423 ns/iter |
0.98 |
Pointer_Walker_Schema_ISO_Language |
6765146.428571305 ns/iter |
8026006.6666647205 ns/iter |
0.84 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
2393161.4285710827 ns/iter |
2201171.2374578896 ns/iter |
1.09 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
3597996.2566850977 ns/iter |
3990068.604650787 ns/iter |
0.90 |
Pointer_Position_Tracker_Get_Deeply_Nested |
524.9745726390257 ns/iter |
533.3889285714528 ns/iter |
0.98 |
URITemplateRouter_Create |
40266.12500724593 ns/iter |
38532.50558036235 ns/iter |
1.04 |
URITemplateRouter_Match |
190.63841880703504 ns/iter |
225.37005297212187 ns/iter |
0.85 |
URITemplateRouter_Match_BasePath |
215.88590625000845 ns/iter |
257.2664285714511 ns/iter |
0.84 |
URITemplateRouterView_Restore |
33329.02076595978 ns/iter |
24215.585763553394 ns/iter |
1.38 |
URITemplateRouterView_Match |
155.0935267857767 ns/iter |
158.93022321427404 ns/iter |
0.98 |
URITemplateRouterView_Match_BasePath |
172.86479059352882 ns/iter |
179.04622627543324 ns/iter |
0.97 |
URITemplateRouterView_Arguments |
528.8933928572501 ns/iter |
439.69631250007524 ns/iter |
1.20 |
JSONL_Parse_Large |
32402361.90476069 ns/iter |
27224704.0000002 ns/iter |
1.19 |
JSONL_Parse_Large_GZIP |
33151057.142861515 ns/iter |
27539861.53846619 ns/iter |
1.20 |
HTML_Build_Table_100000 |
86448228.57143351 ns/iter |
93130633.33331685 ns/iter |
0.93 |
HTML_Render_Table_100000 |
6909525.892857411 ns/iter |
12350835.714288775 ns/iter |
0.56 |
GZIP_Compress_ISO_Language_Set_3_Locations |
35840868.4210429 ns/iter |
33809080.000003174 ns/iter |
1.06 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
9336492.000002181 ns/iter |
11843198.214287603 ns/iter |
0.79 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2086868.4057964801 ns/iter |
2026458.8405796634 ns/iter |
1.03 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
593803.9285711381 ns/iter |
719385.0892857005 ns/iter |
0.83 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com