Skip to content

Wire wycheproof ECDH known-answer tests#2671

Merged
jviotti merged 2 commits into
mainfrom
tests-ecdh
Jul 24, 2026
Merged

Wire wycheproof ECDH known-answer tests#2671
jviotti merged 2 commits into
mainfrom
tests-ecdh

Conversation

@jviotti

@jviotti jviotti commented Jul 23, 2026

Copy link
Copy Markdown
Member

Signed-off-by: Juan Cruz Viotti jv@jviotti.com

Review in cubic

@augmentcode

augmentcode Bot commented Jul 23, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Wires Wycheproof ECDH EC-point known-answer tests into the crypto test suite.

Changes:

  • Adds curve metadata and a small mapper for secp256r1, secp384r1, and secp521r1 (field width + one precomputed key’s scalar/public point).
  • Implements an ECDH test runner that parses Wycheproof’s uncompressed X9.63 peer point encoding and derives a shared secret via ecdh_derive.
  • Registers new Wycheproof suites for P-256/P-384/P-521 in main().

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 👎

@augmentcode augmentcode Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review completed. 3 suggestions posted.

Fix All in Augment

Comment augment review to trigger a new review at any time.

Comment thread test/crypto/wycheproof_test.cc Outdated
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(),

@augmentcode augmentcode Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 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(),

@augmentcode augmentcode Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

Comment thread test/crypto/wycheproof_test.cc Outdated

const auto peer{
sourcemeta::core::hex_to_bytes(test.at("public").to_string())};
const auto shared{

@augmentcode augmentcode Bot Jul 23, 2026

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Fix This in Augment

🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.

@cubic-dev-ai cubic-dev-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No issues found across 1 file

Re-trigger cubic

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (macos/llvm)

Details
Benchmark suite Current: 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.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/gcc)

Details
Benchmark suite Current: 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.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (linux/llvm)

Details
Benchmark suite Current: 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.

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Benchmark (windows/msvc)

Details
Benchmark suite Current: 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.

jviotti added 2 commits July 23, 2026 20:52
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti
jviotti merged commit ca521f4 into main Jul 24, 2026
12 checks passed
@jviotti
jviotti deleted the tests-ecdh branch July 24, 2026 12:03
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant