Wire wycheproof ECDH known-answer tests#2671
Conversation
🤖 Augment PR SummarySummary: Wires Wycheproof ECDH EC-point known-answer tests into the crypto test suite. Changes:
Technical Notes: Valid vectors assert the derived secret matches the Wycheproof shared secret (left-padded to the curve field width); invalid vectors assert the peer point is rejected (no shared secret produced). 🤖 Was this summary useful? React with 👍 or 👎 |
| auto check_ecdh(const EcdhCurve &info, const std::string_view peer_point, | ||
| const std::string_view shared, const bool expected) -> void { | ||
| const auto private_key{sourcemeta::core::make_ec_private_key( | ||
| info.curve, sourcemeta::core::hex_to_bytes(info.private_scalar).value(), |
There was a problem hiding this comment.
test/crypto/wycheproof_test.cc:708: hex_to_bytes(...).value() is evaluated before any EXPECT_* runs, so if one of these hard-coded hex strings is ever malformed this will throw std::bad_optional_access and abort the whole test binary rather than failing the case cleanly. Consider unwrapping only after checking has_value() so failures are reported by gtest instead of via an exception.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| const auto secret{ | ||
| sourcemeta::core::ecdh_derive(private_key.value(), public_key.value())}; | ||
| EXPECT_TRUE(secret.has_value()); | ||
| EXPECT_EQ(secret.value(), |
There was a problem hiding this comment.
test/crypto/wycheproof_test.cc:735-736: EXPECT_TRUE(secret.has_value()) is non-fatal, but EXPECT_EQ(secret.value(), ...) will still call .value() even when the optional is empty, which can throw and terminate the run. Guarding the .value() access on secret.has_value() would avoid turning an assertion failure into a crash.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
|
|
||
| const auto peer{ | ||
| sourcemeta::core::hex_to_bytes(test.at("public").to_string())}; | ||
| const auto shared{ |
There was a problem hiding this comment.
test/crypto/wycheproof_test.cc:770-773: shared is parsed and required even for non-valid vectors, but check_ecdh doesn’t use shared when expected is false; a malformed/absent shared field would silently skip invalid-point coverage. Consider only decoding shared for the valid cases you actually verify.
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: b49b759 | Previous: 3dc79d5 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.9694707316617053 ns/iter |
1.5744204654616447 ns/iter |
1.25 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.8105853959189484 ns/iter |
2.226198427532789 ns/iter |
0.81 |
Regex_Period_Asterisk |
1.8381842635254788 ns/iter |
1.8463002422441075 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
1.874092928266182 ns/iter |
1.614051775895549 ns/iter |
1.16 |
Regex_Period_Plus |
2.214675332638568 ns/iter |
1.8916815111335288 ns/iter |
1.17 |
Regex_Period |
2.3214872448515114 ns/iter |
1.9848969132070893 ns/iter |
1.17 |
Regex_Caret_Period_Plus_Dollar |
2.124486234541607 ns/iter |
2.0050702511312157 ns/iter |
1.06 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.166924482617822 ns/iter |
2.0078369287178144 ns/iter |
1.08 |
Regex_Caret_Period_Asterisk_Dollar |
1.8296145977644418 ns/iter |
1.742321464302995 ns/iter |
1.05 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
1.7904358647921452 ns/iter |
1.5736476766235536 ns/iter |
1.14 |
Regex_Caret_X_Hyphen |
6.38259102991938 ns/iter |
5.684861649213441 ns/iter |
1.12 |
Regex_Period_Md_Dollar |
22.13729427724128 ns/iter |
15.664914994371573 ns/iter |
1.41 |
Regex_Caret_Slash_Period_Asterisk |
5.406020578949186 ns/iter |
5.276575115030274 ns/iter |
1.02 |
Regex_Caret_Period_Range_Dollar |
2.1215284396340035 ns/iter |
1.9159223953170605 ns/iter |
1.11 |
Regex_Nested_Backtrack |
27.260787627643044 ns/iter |
24.84579855455417 ns/iter |
1.10 |
JSON_Array_Of_Objects_Unique |
406.87266975129523 ns/iter |
335.0806492145671 ns/iter |
1.21 |
JSON_Parse_1 |
9546.242639004602 ns/iter |
6158.205912808948 ns/iter |
1.55 |
JSON_Parse_Real |
8688.940175041698 ns/iter |
6419.008483179042 ns/iter |
1.35 |
JSON_Parse_Decimal |
9171.308724161872 ns/iter |
6832.87822194456 ns/iter |
1.34 |
JSON_Parse_Schema_ISO_Language |
5598515.829999542 ns/iter |
3995037.860214344 ns/iter |
1.40 |
JSON_Parse_Integer |
5055.903329999865 ns/iter |
4320.185424288854 ns/iter |
1.17 |
JSON_Parse_String_NonSSO_Plain |
7917.240081976617 ns/iter |
6754.588250608101 ns/iter |
1.17 |
JSON_Parse_String_SSO_Plain |
3086.946353245378 ns/iter |
2657.7911913507337 ns/iter |
1.16 |
JSON_Parse_String_Escape_Heavy |
23775.984725429735 ns/iter |
19791.453706601307 ns/iter |
1.20 |
JSON_Parse_Object_Short_Keys |
9187.615033118325 ns/iter |
7579.163066466255 ns/iter |
1.21 |
JSON_Parse_Object_Scalar_Properties |
4476.738315164068 ns/iter |
4012.6585507283835 ns/iter |
1.12 |
JSON_Parse_Object_Array_Properties |
7957.495021719003 ns/iter |
6641.4381330336255 ns/iter |
1.20 |
JSON_Parse_Object_Object_Properties |
8633.671319102961 ns/iter |
6866.176193064784 ns/iter |
1.26 |
JSON_Parse_Nested_Containers |
63139.141111856334 ns/iter |
57796.61063747306 ns/iter |
1.09 |
JSON_From_String_Copy |
24.551228199737615 ns/iter |
21.502213652817414 ns/iter |
1.14 |
JSON_From_String_Temporary |
19.62493945432487 ns/iter |
17.67913420407302 ns/iter |
1.11 |
JSON_Number_To_Double |
42.47152441241889 ns/iter |
33.68933427739195 ns/iter |
1.26 |
JSON_Object_At_Last_Key/8 |
4.322034563846485 ns/iter |
3.7746408298718372 ns/iter |
1.15 |
JSON_Object_At_Last_Key/32 |
12.647060744621234 ns/iter |
11.322894729218595 ns/iter |
1.12 |
JSON_Object_At_Last_Key/128 |
60.045880216662965 ns/iter |
52.680096384863404 ns/iter |
1.14 |
JSON_Object_At_Last_Key/512 |
227.3623628727274 ns/iter |
194.79364591058314 ns/iter |
1.17 |
JSON_Fast_Hash_Helm_Chart_Lock |
70.09922455551441 ns/iter |
54.92878314369591 ns/iter |
1.28 |
JSON_Equality_Helm_Chart_Lock |
192.28038162378377 ns/iter |
150.9417735622691 ns/iter |
1.27 |
JSON_Divisible_By_Decimal |
210.1843104963384 ns/iter |
160.6103267917206 ns/iter |
1.31 |
JSON_String_Equal/10 |
9.41531984419715 ns/iter |
6.628527645430576 ns/iter |
1.42 |
JSON_String_Equal/100 |
8.330606757624654 ns/iter |
6.68698293903672 ns/iter |
1.25 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.35766557411908084 ns/iter |
0.31455127678465994 ns/iter |
1.14 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.7441781720553378 ns/iter |
2.989702914152306 ns/iter |
1.25 |
JSON_String_Fast_Hash/10 |
2.7342369742041077 ns/iter |
2.3875475543281266 ns/iter |
1.15 |
JSON_String_Fast_Hash/100 |
2.103847459802848 ns/iter |
1.910737158788265 ns/iter |
1.10 |
JSON_String_Key_Hash/10 |
1.7361228856019641 ns/iter |
1.576414276205515 ns/iter |
1.10 |
JSON_String_Key_Hash/100 |
2.1528073648983437 ns/iter |
1.9404951730021427 ns/iter |
1.11 |
JSON_Object_Defines_Miss_Same_Length |
2.922178613023184 ns/iter |
2.5245914770077955 ns/iter |
1.16 |
JSON_Object_Defines_Miss_Too_Small |
2.7915488726055213 ns/iter |
2.526384871536374 ns/iter |
1.10 |
JSON_Object_Defines_Miss_Too_Large |
2.9137599202117777 ns/iter |
2.514963515866592 ns/iter |
1.16 |
Pointer_Object_Traverse |
30.137568263973463 ns/iter |
22.00952867495811 ns/iter |
1.37 |
Pointer_Object_Try_Traverse |
31.761375140277917 ns/iter |
21.535716017517707 ns/iter |
1.47 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
207.67359680256956 ns/iter |
147.66691198322653 ns/iter |
1.41 |
Pointer_Walker_Schema_ISO_Language |
2598063.455830562 ns/iter |
2358472.1762714344 ns/iter |
1.10 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1195376.7301038313 ns/iter |
1200987.1121792824 ns/iter |
1.00 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1896035.4754829984 ns/iter |
973239.7979350507 ns/iter |
1.95 |
Pointer_Position_Tracker_Get_Deeply_Nested |
322.83473274145996 ns/iter |
314.59578493350114 ns/iter |
1.03 |
JSONPath_Descendant_Filter_Nested |
1281.184397817232 ns/iter |
1151.8401727088246 ns/iter |
1.11 |
URITemplateRouter_Create |
23746.308586644147 ns/iter |
21510.23082267476 ns/iter |
1.10 |
URITemplateRouter_Match |
174.39873079173358 ns/iter |
156.31128147165327 ns/iter |
1.12 |
URITemplateRouter_Match_BasePath |
199.42029574064932 ns/iter |
184.71741698182728 ns/iter |
1.08 |
URITemplateRouterView_Restore |
11160.509409722448 ns/iter |
9511.35993081579 ns/iter |
1.17 |
URITemplateRouterView_Match |
153.9551371021546 ns/iter |
124.92943995768778 ns/iter |
1.23 |
URITemplateRouterView_Match_BasePath |
155.0346183359989 ns/iter |
148.169613748668 ns/iter |
1.05 |
URITemplateRouterView_Arguments |
532.1882455075546 ns/iter |
511.2785439521596 ns/iter |
1.04 |
JSONL_Parse_Large |
9802364.88571466 ns/iter |
10530713.39393944 ns/iter |
0.93 |
JSONL_Parse_Large_GZIP |
10679316.030770607 ns/iter |
10884101.705882773 ns/iter |
0.98 |
JSONLD_Catalog_Annotation_List_Populate |
850374.2921212423 ns/iter |
904724.9572538629 ns/iter |
0.94 |
JSONLD_Catalog_Materialize |
4572619.625806481 ns/iter |
4180834.058139903 ns/iter |
1.09 |
HTML_Build_Table_100000 |
35001002.1578974 ns/iter |
36637900.809518255 ns/iter |
0.96 |
HTML_Render_Table_100000 |
1951154.3868421346 ns/iter |
1753933.3341178196 ns/iter |
1.11 |
GZIP_Compress_ISO_Language_Set_3_Locations |
25484151.785714664 ns/iter |
28259717.961532257 ns/iter |
0.90 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
3544449.1978611276 ns/iter |
3356461.2268519425 ns/iter |
1.06 |
GZIP_Compress_ISO_Language_Set_3_Schema |
1486511.4184101506 ns/iter |
1617348.8638397008 ns/iter |
0.92 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
273560.5679107472 ns/iter |
254146.85749691358 ns/iter |
1.08 |
JOSE_VerifySignature_RS256 |
25205.34437189314 ns/iter |
21542.345840931444 ns/iter |
1.17 |
JOSE_VerifySignature_ES512 |
1158773.3134919046 ns/iter |
1060069.444444404 ns/iter |
1.09 |
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: b49b759 | Previous: 3dc79d5 | Ratio |
|---|---|---|---|
JOSE_VerifySignature_RS256 |
22317.74351388228 ns/iter |
22145.2447160712 ns/iter |
1.01 |
JOSE_VerifySignature_ES512 |
576162.9522240266 ns/iter |
594221.9276910328 ns/iter |
0.97 |
GZIP_Compress_ISO_Language_Set_3_Locations |
36372520.15789727 ns/iter |
36667233.263157964 ns/iter |
0.99 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4358402.38888847 ns/iter |
4357745.723270065 ns/iter |
1.00 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2015683.6195964431 ns/iter |
2026183.6936416102 ns/iter |
0.99 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
380915.55792353116 ns/iter |
381997.03102886595 ns/iter |
1.00 |
HTML_Build_Table_100000 |
130160165.0000066 ns/iter |
65781265.72726846 ns/iter |
1.98 |
HTML_Render_Table_100000 |
1931031.6450701961 ns/iter |
1875140.8517518963 ns/iter |
1.03 |
JSONLD_Catalog_Annotation_List_Populate |
1328016.7457304806 ns/iter |
1331433.7367425605 ns/iter |
1.00 |
JSONLD_Catalog_Materialize |
7000444.173469559 ns/iter |
7060705.019801453 ns/iter |
0.99 |
JSONL_Parse_Large |
13939273.860000867 ns/iter |
14129072.979999363 ns/iter |
0.99 |
JSONL_Parse_Large_GZIP |
15219922.260868039 ns/iter |
15426468.866667164 ns/iter |
0.99 |
URITemplateRouter_Create |
31504.602842620985 ns/iter |
30775.683925373727 ns/iter |
1.02 |
URITemplateRouter_Match |
159.79234600569737 ns/iter |
160.22075271180822 ns/iter |
1.00 |
URITemplateRouter_Match_BasePath |
188.8083701469889 ns/iter |
188.08126981943917 ns/iter |
1.00 |
URITemplateRouterView_Restore |
8630.23953363744 ns/iter |
8696.266244551784 ns/iter |
0.99 |
URITemplateRouterView_Match |
125.40686990593302 ns/iter |
125.03088034187502 ns/iter |
1.00 |
URITemplateRouterView_Match_BasePath |
144.69185192826697 ns/iter |
144.45064783402947 ns/iter |
1.00 |
URITemplateRouterView_Arguments |
472.6324890650691 ns/iter |
472.295269944563 ns/iter |
1.00 |
JSONPath_Descendant_Filter_Nested |
1726.3511872303175 ns/iter |
1752.1422984029657 ns/iter |
0.99 |
Pointer_Object_Traverse |
33.04142727553299 ns/iter |
32.731739343099854 ns/iter |
1.01 |
Pointer_Object_Try_Traverse |
25.833401283449906 ns/iter |
25.87583607707869 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
163.31061019914745 ns/iter |
154.41394966083618 ns/iter |
1.06 |
Pointer_Walker_Schema_ISO_Language |
2851353.8106999514 ns/iter |
2906590.6150627867 ns/iter |
0.98 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1877996.0923912204 ns/iter |
1880987.2964958155 ns/iter |
1.00 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1740153.0420792624 ns/iter |
1757144.7475245798 ns/iter |
0.99 |
Pointer_Position_Tracker_Get_Deeply_Nested |
559.6834069447048 ns/iter |
380.15610425049664 ns/iter |
1.47 |
JSON_Array_Of_Objects_Unique |
427.9687969936154 ns/iter |
425.96886981760935 ns/iter |
1.00 |
JSON_Parse_1 |
9980.209241076236 ns/iter |
10099.37443923539 ns/iter |
0.99 |
JSON_Parse_Real |
8079.699110038649 ns/iter |
7881.310223266945 ns/iter |
1.03 |
JSON_Parse_Decimal |
13099.621473367984 ns/iter |
13067.404259688159 ns/iter |
1.00 |
JSON_Parse_Schema_ISO_Language |
6655454.009614477 ns/iter |
6805850.330097996 ns/iter |
0.98 |
JSON_Parse_Integer |
5819.375865767423 ns/iter |
5714.220414829776 ns/iter |
1.02 |
JSON_Parse_String_NonSSO_Plain |
12130.891003548792 ns/iter |
11985.767610698575 ns/iter |
1.01 |
JSON_Parse_String_SSO_Plain |
5128.293225273298 ns/iter |
5069.714261862558 ns/iter |
1.01 |
JSON_Parse_String_Escape_Heavy |
26190.21653932853 ns/iter |
25662.386356943425 ns/iter |
1.02 |
JSON_Parse_Object_Short_Keys |
14133.43531718855 ns/iter |
13922.495728180687 ns/iter |
1.02 |
JSON_Parse_Object_Scalar_Properties |
6973.532293519307 ns/iter |
6998.253709866305 ns/iter |
1.00 |
JSON_Parse_Object_Array_Properties |
13401.819980933871 ns/iter |
12262.794537792617 ns/iter |
1.09 |
JSON_Parse_Object_Object_Properties |
13330.825293995198 ns/iter |
12266.798428126052 ns/iter |
1.09 |
JSON_Parse_Nested_Containers |
104675.06200270224 ns/iter |
99020.14467592462 ns/iter |
1.06 |
JSON_From_String_Copy |
18.08306551671413 ns/iter |
18.08871679140242 ns/iter |
1.00 |
JSON_From_String_Temporary |
15.386651197080313 ns/iter |
15.354967375361152 ns/iter |
1.00 |
JSON_Number_To_Double |
21.10243698654822 ns/iter |
20.883380605666773 ns/iter |
1.01 |
JSON_Object_At_Last_Key/8 |
3.815966761812629 ns/iter |
3.814831166011779 ns/iter |
1.00 |
JSON_Object_At_Last_Key/32 |
11.885291922717988 ns/iter |
11.884874340905853 ns/iter |
1.00 |
JSON_Object_At_Last_Key/128 |
48.65090636250197 ns/iter |
48.795690337465324 ns/iter |
1.00 |
JSON_Object_At_Last_Key/512 |
361.9850977081313 ns/iter |
358.77574291958575 ns/iter |
1.01 |
JSON_Fast_Hash_Helm_Chart_Lock |
62.26784503101075 ns/iter |
60.79051960227083 ns/iter |
1.02 |
JSON_Equality_Helm_Chart_Lock |
158.8844291166616 ns/iter |
158.76341031159836 ns/iter |
1.00 |
JSON_Divisible_By_Decimal |
249.60667774127987 ns/iter |
249.4165856077889 ns/iter |
1.00 |
JSON_String_Equal/10 |
5.375164216891669 ns/iter |
5.37554477073664 ns/iter |
1.00 |
JSON_String_Equal/100 |
6.001444148726799 ns/iter |
5.995162319828491 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.6230347471348919 ns/iter |
0.6228803197676586 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
25.210450886592643 ns/iter |
25.19755773208696 ns/iter |
1.00 |
JSON_String_Fast_Hash/10 |
2.3046785792980695 ns/iter |
2.2976389592145527 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
2.2959828666924116 ns/iter |
2.297051779604534 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.2462451877492469 ns/iter |
1.2471284913124034 ns/iter |
1.00 |
JSON_String_Key_Hash/100 |
12.447376862762388 ns/iter |
12.43938495445176 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.1138682514358327 ns/iter |
3.17956151526374 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Too_Small |
3.1135961765820626 ns/iter |
3.1140308578273395 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.123617706741892 ns/iter |
3.1127473389746436 ns/iter |
1.00 |
Regex_Lower_S_Or_Upper_S_Asterisk |
0.9344695444031159 ns/iter |
0.9339852237004539 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
0.622930083643987 ns/iter |
0.625780329623978 ns/iter |
1.00 |
Regex_Period_Asterisk |
0.9341054987133687 ns/iter |
0.9333304778969427 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
0.6229506416036016 ns/iter |
0.624696949859181 ns/iter |
1.00 |
Regex_Period_Plus |
0.9615980171023327 ns/iter |
0.9350109649950781 ns/iter |
1.03 |
Regex_Period |
0.6228200167547923 ns/iter |
0.622528852223078 ns/iter |
1.00 |
Regex_Caret_Period_Plus_Dollar |
0.9331040662850218 ns/iter |
0.9369320204594895 ns/iter |
1.00 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
0.6243142553513299 ns/iter |
0.6249713652579701 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
0.9343753887067506 ns/iter |
0.9348846735649338 ns/iter |
1.00 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
0.6227305331842307 ns/iter |
0.6236790600060473 ns/iter |
1.00 |
Regex_Caret_X_Hyphen |
4.3867107584763385 ns/iter |
4.366643854117656 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
32.54918310515734 ns/iter |
28.940378549040098 ns/iter |
1.12 |
Regex_Caret_Slash_Period_Asterisk |
4.669522302255654 ns/iter |
4.674765483702024 ns/iter |
1.00 |
Regex_Caret_Period_Range_Dollar |
1.2495439301480622 ns/iter |
1.2459992933433783 ns/iter |
1.00 |
Regex_Nested_Backtrack |
42.83336994784613 ns/iter |
37.307101749113926 ns/iter |
1.15 |
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: b49b759 | Previous: 3dc79d5 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.8180499709348608 ns/iter |
2.558089284597579 ns/iter |
1.10 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.462652309895248 ns/iter |
2.207720861861063 ns/iter |
1.12 |
Regex_Period_Asterisk |
2.4722331157940545 ns/iter |
2.1971995627678824 ns/iter |
1.13 |
Regex_Group_Period_Asterisk_Group |
2.8143030152261224 ns/iter |
2.4927196812075305 ns/iter |
1.13 |
Regex_Period_Plus |
4.177960752421757 ns/iter |
3.1140293844062117 ns/iter |
1.34 |
Regex_Period |
3.876211013910809 ns/iter |
2.8537274825413506 ns/iter |
1.36 |
Regex_Caret_Period_Plus_Dollar |
3.8781170769144717 ns/iter |
2.8026936013435697 ns/iter |
1.38 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
4.221341117527045 ns/iter |
3.11313950058433 ns/iter |
1.36 |
Regex_Caret_Period_Asterisk_Dollar |
3.17655775940403 ns/iter |
3.7354100525369125 ns/iter |
0.85 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.82518857125741 ns/iter |
3.4238239763903358 ns/iter |
0.83 |
Regex_Caret_X_Hyphen |
6.988346694242573 ns/iter |
6.627650517502842 ns/iter |
1.05 |
Regex_Period_Md_Dollar |
26.274508132759717 ns/iter |
27.99832499972016 ns/iter |
0.94 |
Regex_Caret_Slash_Period_Asterisk |
7.579430730605973 ns/iter |
7.157687017246772 ns/iter |
1.06 |
Regex_Caret_Period_Range_Dollar |
4.222819781125972 ns/iter |
4.356746816291712 ns/iter |
0.97 |
Regex_Nested_Backtrack |
38.19065237207496 ns/iter |
38.045205633002226 ns/iter |
1.00 |
JSON_Array_Of_Objects_Unique |
423.4740753348206 ns/iter |
396.36808672619014 ns/iter |
1.07 |
JSON_Parse_1 |
4759.4112604500115 ns/iter |
4870.215537712756 ns/iter |
0.98 |
JSON_Parse_Real |
5320.0828432417 ns/iter |
5417.117223511106 ns/iter |
0.98 |
JSON_Parse_Decimal |
7605.551048828998 ns/iter |
7808.407442333546 ns/iter |
0.97 |
JSON_Parse_Schema_ISO_Language |
3605871.4507772294 ns/iter |
3482601.8805966643 ns/iter |
1.04 |
JSON_Parse_Integer |
3939.216464148355 ns/iter |
3704.522844279966 ns/iter |
1.06 |
JSON_Parse_String_NonSSO_Plain |
5188.912933813978 ns/iter |
5181.948265893929 ns/iter |
1.00 |
JSON_Parse_String_SSO_Plain |
2835.5411071239223 ns/iter |
2774.6249102999873 ns/iter |
1.02 |
JSON_Parse_String_Escape_Heavy |
15290.724544877095 ns/iter |
14348.95586645783 ns/iter |
1.07 |
JSON_Parse_Object_Short_Keys |
8136.060065861357 ns/iter |
10489.26322806741 ns/iter |
0.78 |
JSON_Parse_Object_Scalar_Properties |
4167.336998628669 ns/iter |
4058.3081761009594 ns/iter |
1.03 |
JSON_Parse_Object_Array_Properties |
5960.670746436443 ns/iter |
5873.510820911182 ns/iter |
1.01 |
JSON_Parse_Object_Object_Properties |
5970.306126421446 ns/iter |
5541.932388196633 ns/iter |
1.08 |
JSON_Parse_Nested_Containers |
45692.71880297453 ns/iter |
46045.22255310412 ns/iter |
0.99 |
JSON_From_String_Copy |
22.865198478810463 ns/iter |
19.944442013440735 ns/iter |
1.15 |
JSON_From_String_Temporary |
20.416543347909027 ns/iter |
17.775160707434384 ns/iter |
1.15 |
JSON_Number_To_Double |
22.801156690828886 ns/iter |
22.9203009092195 ns/iter |
0.99 |
JSON_Object_At_Last_Key/8 |
4.026035778444413 ns/iter |
3.864317430613304 ns/iter |
1.04 |
JSON_Object_At_Last_Key/32 |
13.344143011530663 ns/iter |
12.643229002269022 ns/iter |
1.06 |
JSON_Object_At_Last_Key/128 |
47.57938166293676 ns/iter |
49.45032633372705 ns/iter |
0.96 |
JSON_Object_At_Last_Key/512 |
368.4284040565763 ns/iter |
393.4340028839743 ns/iter |
0.94 |
JSON_Fast_Hash_Helm_Chart_Lock |
70.07447704897254 ns/iter |
57.90762524782168 ns/iter |
1.21 |
JSON_Equality_Helm_Chart_Lock |
154.65199144047278 ns/iter |
153.11890255604786 ns/iter |
1.01 |
JSON_Divisible_By_Decimal |
249.32344452421736 ns/iter |
251.25401015069744 ns/iter |
0.99 |
JSON_String_Equal/10 |
5.27701270462095 ns/iter |
5.611169225648169 ns/iter |
0.94 |
JSON_String_Equal/100 |
5.981542457286691 ns/iter |
6.234035360018165 ns/iter |
0.96 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
1.054597789322204 ns/iter |
0.9353751610079271 ns/iter |
1.13 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
12.473470551712516 ns/iter |
10.592855709790337 ns/iter |
1.18 |
JSON_String_Fast_Hash/10 |
2.464807093699059 ns/iter |
2.490587966196279 ns/iter |
0.99 |
JSON_String_Fast_Hash/100 |
2.4618029397878027 ns/iter |
2.491410870948276 ns/iter |
0.99 |
JSON_String_Key_Hash/10 |
2.4617212397039765 ns/iter |
2.1824632292037083 ns/iter |
1.13 |
JSON_String_Key_Hash/100 |
8.190221625983362 ns/iter |
6.537988520510409 ns/iter |
1.25 |
JSON_Object_Defines_Miss_Same_Length |
4.223077774029173 ns/iter |
3.4373504430422077 ns/iter |
1.23 |
JSON_Object_Defines_Miss_Too_Small |
3.2009409442607755 ns/iter |
3.0849666847630295 ns/iter |
1.04 |
JSON_Object_Defines_Miss_Too_Large |
2.922592258586976 ns/iter |
2.7921238968412947 ns/iter |
1.05 |
Pointer_Object_Traverse |
30.597364787163183 ns/iter |
29.218850979105653 ns/iter |
1.05 |
Pointer_Object_Try_Traverse |
32.914033455460164 ns/iter |
31.228255343274217 ns/iter |
1.05 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
196.89510363803848 ns/iter |
149.61848473880764 ns/iter |
1.32 |
Pointer_Walker_Schema_ISO_Language |
2810058.5984250717 ns/iter |
2625054.377862665 ns/iter |
1.07 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1301659.8144713414 ns/iter |
1225383.9627657698 ns/iter |
1.06 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1636095.2610722373 ns/iter |
1604882.3471266231 ns/iter |
1.02 |
Pointer_Position_Tracker_Get_Deeply_Nested |
752.5696202254513 ns/iter |
678.1680544394043 ns/iter |
1.11 |
JSONPath_Descendant_Filter_Nested |
1589.4993343240926 ns/iter |
1583.794480978921 ns/iter |
1.00 |
URITemplateRouter_Create |
31350.07395599183 ns/iter |
33908.91225666281 ns/iter |
0.92 |
URITemplateRouter_Match |
176.30085758713452 ns/iter |
175.38284735575584 ns/iter |
1.01 |
URITemplateRouter_Match_BasePath |
211.5690401785245 ns/iter |
201.4227233118427 ns/iter |
1.05 |
URITemplateRouterView_Restore |
10045.626983465325 ns/iter |
8549.936118788157 ns/iter |
1.17 |
URITemplateRouterView_Match |
150.3296406763197 ns/iter |
143.97574129356371 ns/iter |
1.04 |
URITemplateRouterView_Match_BasePath |
166.52323444537794 ns/iter |
165.79084566978466 ns/iter |
1.00 |
URITemplateRouterView_Arguments |
456.92327581597414 ns/iter |
429.9931447592624 ns/iter |
1.06 |
JSONL_Parse_Large |
9240324.74999966 ns/iter |
9948929.885714669 ns/iter |
0.93 |
JSONL_Parse_Large_GZIP |
10963088.531248389 ns/iter |
11448621.868852137 ns/iter |
0.96 |
JSONLD_Catalog_Annotation_List_Populate |
1314035.485074528 ns/iter |
1252552.75849736 ns/iter |
1.05 |
JSONLD_Catalog_Materialize |
4633853.614379013 ns/iter |
4216431.048780439 ns/iter |
1.10 |
HTML_Build_Table_100000 |
74001049.33333296 ns/iter |
67534753.40000251 ns/iter |
1.10 |
HTML_Render_Table_100000 |
5215856.143939329 ns/iter |
5259575.187969482 ns/iter |
0.99 |
GZIP_Compress_ISO_Language_Set_3_Locations |
35618895.29999576 ns/iter |
32572999.904762886 ns/iter |
1.09 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4291775.809815729 ns/iter |
4159337.911242887 ns/iter |
1.03 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2117921.5606059986 ns/iter |
1866153.6346665646 ns/iter |
1.13 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
275566.58622046147 ns/iter |
357210.7301425333 ns/iter |
0.77 |
JOSE_VerifySignature_RS256 |
63985.703551152925 ns/iter |
56696.022297894924 ns/iter |
1.13 |
JOSE_VerifySignature_ES512 |
2677336.34351127 ns/iter |
2365785.864864887 ns/iter |
1.13 |
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: b49b759 | Previous: 3dc79d5 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
5.401981250000989 ns/iter |
5.045443750000394 ns/iter |
1.07 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
5.107924000001276 ns/iter |
4.978191000000152 ns/iter |
1.03 |
Regex_Period_Asterisk |
5.219770000001063 ns/iter |
4.9730075457530285 ns/iter |
1.05 |
Regex_Group_Period_Asterisk_Group |
5.036863000000267 ns/iter |
4.982734999998684 ns/iter |
1.01 |
Regex_Period_Plus |
5.172648000000208 ns/iter |
4.63299175141283 ns/iter |
1.12 |
Regex_Period |
5.352252000000135 ns/iter |
4.711749117660444 ns/iter |
1.14 |
Regex_Caret_Period_Plus_Dollar |
5.053482999999233 ns/iter |
4.6275678571439425 ns/iter |
1.09 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
5.3782821428569605 ns/iter |
4.765303805280665 ns/iter |
1.13 |
Regex_Caret_Period_Asterisk_Dollar |
5.3479829999992035 ns/iter |
4.99860625000029 ns/iter |
1.07 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
5.072877999998582 ns/iter |
4.960082000000057 ns/iter |
1.02 |
Regex_Caret_X_Hyphen |
8.530242819062595 ns/iter |
7.90127273258365 ns/iter |
1.08 |
Regex_Period_Md_Dollar |
45.17953330197815 ns/iter |
55.65365178571011 ns/iter |
0.81 |
Regex_Caret_Slash_Period_Asterisk |
7.9813683035721645 ns/iter |
7.438327008928119 ns/iter |
1.07 |
Regex_Caret_Period_Range_Dollar |
6.043157142857224 ns/iter |
5.435316000000512 ns/iter |
1.11 |
Regex_Nested_Backtrack |
55.8080400000108 ns/iter |
79.1580133928755 ns/iter |
0.71 |
JSON_Array_Of_Objects_Unique |
592.6868999999897 ns/iter |
777.8756696428247 ns/iter |
0.76 |
JSON_Parse_1 |
8944.981049191272 ns/iter |
9224.527569074029 ns/iter |
0.97 |
JSON_Parse_Real |
16168.783482142551 ns/iter |
17963.557710339963 ns/iter |
0.90 |
JSON_Parse_Decimal |
11943.687499999505 ns/iter |
11241.237499998391 ns/iter |
1.06 |
JSON_Parse_Schema_ISO_Language |
7364366.964286059 ns/iter |
7953129.999999772 ns/iter |
0.93 |
JSON_Parse_Integer |
6219.9437499990445 ns/iter |
5932.500000000118 ns/iter |
1.05 |
JSON_Parse_String_NonSSO_Plain |
7850.00223214435 ns/iter |
8019.214646362273 ns/iter |
0.98 |
JSON_Parse_String_SSO_Plain |
3624.6165631848608 ns/iter |
3700.326517201337 ns/iter |
0.98 |
JSON_Parse_String_Escape_Heavy |
21890.303124997954 ns/iter |
24345.81071428608 ns/iter |
0.90 |
JSON_Parse_Object_Short_Keys |
13377.305235245154 ns/iter |
13176.718630721392 ns/iter |
1.02 |
JSON_Parse_Object_Scalar_Properties |
6949.137276787302 ns/iter |
6795.991071429443 ns/iter |
1.02 |
JSON_Parse_Object_Array_Properties |
11350.092187498716 ns/iter |
11694.940625002204 ns/iter |
0.97 |
JSON_Parse_Object_Object_Properties |
11594.360714285911 ns/iter |
11752.912499998403 ns/iter |
0.99 |
JSON_Parse_Nested_Containers |
78692.33258929345 ns/iter |
80217.99107143276 ns/iter |
0.98 |
JSON_From_String_Copy |
66.4101160714381 ns/iter |
65.97472321429011 ns/iter |
1.01 |
JSON_From_String_Temporary |
58.115029999999024 ns/iter |
84.48732212109003 ns/iter |
0.69 |
JSON_Number_To_Double |
122.57023437499015 ns/iter |
143.87949804109442 ns/iter |
0.85 |
JSON_Object_At_Last_Key/8 |
7.243530133929406 ns/iter |
7.439642857142255 ns/iter |
0.97 |
JSON_Object_At_Last_Key/32 |
24.32577093386846 ns/iter |
24.47246428571199 ns/iter |
0.99 |
JSON_Object_At_Last_Key/128 |
90.15063883257362 ns/iter |
101.42268297220039 ns/iter |
0.89 |
JSON_Object_At_Last_Key/512 |
422.95892323027533 ns/iter |
431.84463667213475 ns/iter |
0.98 |
JSON_Fast_Hash_Helm_Chart_Lock |
102.78620969705665 ns/iter |
117.29278571428786 ns/iter |
0.88 |
JSON_Equality_Helm_Chart_Lock |
236.733757060974 ns/iter |
203.87870071965196 ns/iter |
1.16 |
JSON_Divisible_By_Decimal |
297.19092665274314 ns/iter |
369.28343852071316 ns/iter |
0.80 |
JSON_String_Equal/10 |
10.356432543050257 ns/iter |
9.922476562501004 ns/iter |
1.04 |
JSON_String_Equal/100 |
11.951492187499468 ns/iter |
17.297273629528416 ns/iter |
0.69 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.55028321428605 ns/iter |
2.123693125000159 ns/iter |
1.20 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.277248373759779 ns/iter |
14.608406250000073 ns/iter |
0.98 |
JSON_String_Fast_Hash/10 |
6.638533928572039 ns/iter |
6.375367857141815 ns/iter |
1.04 |
JSON_String_Fast_Hash/100 |
6.666275669641968 ns/iter |
6.381357142856814 ns/iter |
1.04 |
JSON_String_Key_Hash/10 |
5.414105357142977 ns/iter |
4.959033035715622 ns/iter |
1.09 |
JSON_String_Key_Hash/100 |
11.911830357141591 ns/iter |
10.960442187499808 ns/iter |
1.09 |
JSON_Object_Defines_Miss_Same_Length |
3.828822850306185 ns/iter |
3.876864635934343 ns/iter |
0.99 |
JSON_Object_Defines_Miss_Too_Small |
4.109211212694066 ns/iter |
4.234277016490161 ns/iter |
0.97 |
JSON_Object_Defines_Miss_Too_Large |
3.7872621360936445 ns/iter |
3.8768320312497297 ns/iter |
0.98 |
Pointer_Object_Traverse |
70.87081473213479 ns/iter |
82.31959821429768 ns/iter |
0.86 |
Pointer_Object_Try_Traverse |
71.75236607143937 ns/iter |
71.04906250000502 ns/iter |
1.01 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
231.42154783241634 ns/iter |
160.4299527073454 ns/iter |
1.44 |
Pointer_Walker_Schema_ISO_Language |
11625000.000001203 ns/iter |
11736773.214287106 ns/iter |
0.99 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
2383115.7190631093 ns/iter |
2382318.939393971 ns/iter |
1.00 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
3757104.81283382 ns/iter |
3635173.7967914445 ns/iter |
1.03 |
Pointer_Position_Tracker_Get_Deeply_Nested |
561.4376116072707 ns/iter |
571.3802455356338 ns/iter |
0.98 |
JSONPath_Descendant_Filter_Nested |
2489.425714285939 ns/iter |
2669.968390575109 ns/iter |
0.93 |
URITemplateRouter_Create |
40964.76562499721 ns/iter |
40998.96073283678 ns/iter |
1.00 |
URITemplateRouter_Match |
236.26142452434416 ns/iter |
219.73549999998454 ns/iter |
1.08 |
URITemplateRouter_Match_BasePath |
266.5375096668486 ns/iter |
245.11202621518456 ns/iter |
1.09 |
URITemplateRouterView_Restore |
34517.58495384201 ns/iter |
24330.725000002723 ns/iter |
1.42 |
URITemplateRouterView_Match |
185.57498085492134 ns/iter |
171.03799107144167 ns/iter |
1.08 |
URITemplateRouterView_Match_BasePath |
207.99253312533256 ns/iter |
195.21821385878997 ns/iter |
1.07 |
URITemplateRouterView_Arguments |
539.8237500001204 ns/iter |
616.6451785714701 ns/iter |
0.88 |
JSONL_Parse_Large |
32937552.38094794 ns/iter |
32456785.71428947 ns/iter |
1.01 |
JSONL_Parse_Large_GZIP |
33690814.999999925 ns/iter |
33109390.476197187 ns/iter |
1.02 |
JSONLD_Catalog_Annotation_List_Populate |
2732003.787879435 ns/iter |
2742396.610169519 ns/iter |
1.00 |
JSONLD_Catalog_Materialize |
7866182.222222859 ns/iter |
8496576.000000764 ns/iter |
0.93 |
HTML_Build_Table_100000 |
91154900.00001754 ns/iter |
92010042.85715239 ns/iter |
0.99 |
HTML_Render_Table_100000 |
7895253.571427523 ns/iter |
7953256.666665867 ns/iter |
0.99 |
GZIP_Compress_ISO_Language_Set_3_Locations |
36505447.36841479 ns/iter |
37364715.789480165 ns/iter |
0.98 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
9917656.000000838 ns/iter |
10606348.437502079 ns/iter |
0.94 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2168834.375000017 ns/iter |
2301263.210702748 ns/iter |
0.94 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
613199.5535714704 ns/iter |
570317.5892857562 ns/iter |
1.08 |
JOSE_VerifySignature_RS256 |
21784.910916373334 ns/iter |
23799.9785714302 ns/iter |
0.92 |
JOSE_VerifySignature_ES512 |
1544172.5446428172 ns/iter |
1524216.741071679 ns/iter |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti jv@jviotti.com