Skip to content

Implement SHA-384 and SHA-512 support#2495

Merged
jviotti merged 2 commits into
mainfrom
sha-284-512
Jun 12, 2026
Merged

Implement SHA-384 and SHA-512 support#2495
jviotti merged 2 commits into
mainfrom
sha-284-512

Conversation

@jviotti

@jviotti jviotti commented Jun 12, 2026

Copy link
Copy Markdown
Member

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

Review in cubic

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

augmentcode Bot commented Jun 12, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds SHA-384 and SHA-512 hashing support to the core crypto module, alongside a small SHA-256 refactor to expose raw digest bytes.

Changes:

  • Added new public APIs: sha384/sha384_digest and sha512/sha512_digest
  • Refactored SHA-256 implementation to introduce sha256_digest and build the hex output on top of it
  • Implemented SHA-384/SHA-512 across OpenSSL, CommonCrypto (Apple), and Windows CNG backends
  • Added a shared fallback SHA-2 (64-bit word) core (crypto_sha2_64.h) used by non-OpenSSL/non-Apple/non-Windows builds
  • Updated crypto umbrella header (crypto.h) and CMake targets to compile/install the new headers/sources
  • Added unit tests for SHA-384/SHA-512 (including embedded-NUL/binary inputs and large inputs)
  • Added PyCA/cryptography vector test runners for SHA-384 and SHA-512 to validate against known-good vectors

Technical Notes: The fallback implementations follow FIPS 180-4 padding/scheduling and return big-endian digest bytes, which are then hex-encoded for the string-returning APIs.

🤖 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. 2 suggestions posted.

Fix All in Augment

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

Comment thread src/core/crypto/crypto_sha2_64.h
Comment thread src/core/crypto/crypto_sha2_64.h Outdated

@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.

1 issue found across 16 files

Reply with feedback, questions, or to request a fix.

Re-trigger cubic

Comment thread src/core/crypto/crypto_sha2_64.h Outdated
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>

@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: a765b23 Previous: 166a543 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0904146328266813 ns/iter 2.1948778505096014 ns/iter 0.95
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.05303688801693 ns/iter 2.188847250921999 ns/iter 0.94
Regex_Period_Asterisk 2.068889210620741 ns/iter 2.187781963046241 ns/iter 0.95
Regex_Group_Period_Asterisk_Group 2.1136008835444025 ns/iter 2.223089178673316 ns/iter 0.95
Regex_Period_Plus 2.0682698626292617 ns/iter 2.801846263321535 ns/iter 0.74
Regex_Period 2.0400472154057216 ns/iter 2.490274737512055 ns/iter 0.82
Regex_Caret_Period_Plus_Dollar 2.0517024381240305 ns/iter 2.5393407869697997 ns/iter 0.81
Regex_Caret_Group_Period_Plus_Group_Dollar 2.129364446819401 ns/iter 2.801159527927624 ns/iter 0.76
Regex_Caret_Period_Asterisk_Dollar 2.054478825601337 ns/iter 3.1953916679079732 ns/iter 0.64
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.079079455431207 ns/iter 2.1905343290847914 ns/iter 0.95
Regex_Caret_X_Hyphen 3.748531073271981 ns/iter 6.228303372337734 ns/iter 0.60
Regex_Period_Md_Dollar 24.453939846289895 ns/iter 27.459395554172417 ns/iter 0.89
Regex_Caret_Slash_Period_Asterisk 4.035122234458921 ns/iter 6.237608270433538 ns/iter 0.65
Regex_Caret_Period_Range_Dollar 2.032957053762133 ns/iter 3.4285342463519393 ns/iter 0.59
Regex_Nested_Backtrack 33.374912941389105 ns/iter 37.80938533889622 ns/iter 0.88
JSON_Array_Of_Objects_Unique 380.2968632207678 ns/iter 475.6746052506498 ns/iter 0.80
JSON_Parse_1 4626.322363842165 ns/iter 4810.358271520614 ns/iter 0.96
JSON_Parse_Real 4736.958903553924 ns/iter 5294.76442615128 ns/iter 0.89
JSON_Parse_Decimal 7282.910775236372 ns/iter 7523.861244913839 ns/iter 0.97
JSON_Parse_Schema_ISO_Language 3271308.339622718 ns/iter 3443315.1470590048 ns/iter 0.95
JSON_Parse_Integer 3725.587171328705 ns/iter 3909.4641078441728 ns/iter 0.95
JSON_Parse_String_NonSSO_Plain 4668.435391474501 ns/iter 5015.094275974029 ns/iter 0.93
JSON_Parse_String_SSO_Plain 2488.569498591187 ns/iter 2776.23904454904 ns/iter 0.90
JSON_Parse_String_Escape_Heavy 15727.334300038736 ns/iter 14277.69403803987 ns/iter 1.10
JSON_Parse_Object_Short_Keys 6985.817505361185 ns/iter 10633.084782807146 ns/iter 0.66
JSON_Parse_Object_Scalar_Properties 3728.509305982259 ns/iter 4130.976901371687 ns/iter 0.90
JSON_Parse_Object_Array_Properties 5188.391571515611 ns/iter 5686.776132828015 ns/iter 0.91
JSON_Parse_Object_Object_Properties 5147.540308217721 ns/iter 5816.69750809825 ns/iter 0.88
JSON_Parse_Nested_Containers 42055.52408547183 ns/iter 44892.23850500898 ns/iter 0.94
JSON_From_String_Copy 15.279232391656285 ns/iter 19.326119057776523 ns/iter 0.79
JSON_From_String_Temporary 14.8257277624489 ns/iter 17.15320226663932 ns/iter 0.86
JSON_Number_To_Double 20.22564617526785 ns/iter 24.061648507058756 ns/iter 0.84
JSON_Object_At_Last_Key/8 4.665280363862675 ns/iter 3.704201878108814 ns/iter 1.26
JSON_Object_At_Last_Key/32 18.089689193379083 ns/iter 11.955503676216768 ns/iter 1.51
JSON_Object_At_Last_Key/128 73.85768665896029 ns/iter 48.28920072574283 ns/iter 1.53
JSON_Object_At_Last_Key/512 306.44682460772555 ns/iter 386.48737226562105 ns/iter 0.79
JSON_Fast_Hash_Helm_Chart_Lock 49.83712641463495 ns/iter 56.95420187058747 ns/iter 0.88
JSON_Equality_Helm_Chart_Lock 152.47891600251685 ns/iter 191.81981155841333 ns/iter 0.79
JSON_Divisible_By_Decimal 255.16552846951365 ns/iter 255.70389953639767 ns/iter 1.00
JSON_String_Equal/10 4.906322186405172 ns/iter 6.546622057375531 ns/iter 0.75
JSON_String_Equal/100 6.066787619820258 ns/iter 7.185627333922244 ns/iter 0.84
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8642580126937706 ns/iter 0.935723062348264 ns/iter 0.92
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.80064036344041 ns/iter 10.583549990425317 ns/iter 0.93
JSON_String_Fast_Hash/10 2.0610629593210508 ns/iter 2.1803617940196345 ns/iter 0.95
JSON_String_Fast_Hash/100 2.068713078785578 ns/iter 2.1807244892616766 ns/iter 0.95
JSON_String_Key_Hash/10 1.7302039089399772 ns/iter 2.1827193338085507 ns/iter 0.79
JSON_String_Key_Hash/100 6.643105853508912 ns/iter 6.5379581694129625 ns/iter 1.02
JSON_Object_Defines_Miss_Same_Length 3.169394697883609 ns/iter 2.7277807329693364 ns/iter 1.16
JSON_Object_Defines_Miss_Too_Small 4.256620805704834 ns/iter 3.736980513716617 ns/iter 1.14
JSON_Object_Defines_Miss_Too_Large 3.169680369354677 ns/iter 2.8721425204125923 ns/iter 1.10
Pointer_Object_Traverse 22.99515389801319 ns/iter 24.146339188379994 ns/iter 0.95
Pointer_Object_Try_Traverse 36.355818173915985 ns/iter 30.288530023438522 ns/iter 1.20
Pointer_Push_Back_Pointer_To_Weak_Pointer 150.45349647442237 ns/iter 162.20015195403312 ns/iter 0.93
Pointer_Walker_Schema_ISO_Language 1795389.4373334455 ns/iter 1777314.642317455 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/0 1103654.425196868 ns/iter 1232940.8433099391 ns/iter 0.90
Pointer_Maybe_Tracked_Deeply_Nested/1 1790921.589333569 ns/iter 1674107.813396915 ns/iter 1.07
Pointer_Position_Tracker_Get_Deeply_Nested 698.9119108120397 ns/iter 653.1008110035922 ns/iter 1.07
URITemplateRouter_Create 28965.2804979264 ns/iter 32610.619674420206 ns/iter 0.89
URITemplateRouter_Match 163.6911514346659 ns/iter 179.02791608663688 ns/iter 0.91
URITemplateRouter_Match_BasePath 179.22790939810574 ns/iter 211.0005650607707 ns/iter 0.85
URITemplateRouterView_Restore 3446.3790887219375 ns/iter 7741.9789248863535 ns/iter 0.45
URITemplateRouterView_Match 126.45327088368249 ns/iter 144.967201955904 ns/iter 0.87
URITemplateRouterView_Match_BasePath 141.93869145354662 ns/iter 166.12004314882458 ns/iter 0.85
URITemplateRouterView_Arguments 428.34213657702963 ns/iter 438.9482723383682 ns/iter 0.98
JSONL_Parse_Large 8894731.468353998 ns/iter 10065945.428571662 ns/iter 0.88
JSONL_Parse_Large_GZIP 10392362.52238798 ns/iter 11678751.549999332 ns/iter 0.89
HTML_Build_Table_100000 71228891.66666684 ns/iter 70934409.69999847 ns/iter 1.00
HTML_Render_Table_100000 10478570.750000713 ns/iter 5389937.273437617 ns/iter 1.94
GZIP_Compress_ISO_Language_Set_3_Locations 31011293.7826113 ns/iter 33404621.23809456 ns/iter 0.93
GZIP_Decompress_ISO_Language_Set_3_Locations 4256061.840236962 ns/iter 4118762.742515271 ns/iter 1.03
GZIP_Compress_ISO_Language_Set_3_Schema 1871207.3021389642 ns/iter 1898721.737837924 ns/iter 0.99
GZIP_Decompress_ISO_Language_Set_3_Schema 354118.36557542643 ns/iter 351039.43308270647 ns/iter 1.01

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: a765b23 Previous: 166a543 Ratio
GZIP_Compress_ISO_Language_Set_3_Locations 36246961.89473597 ns/iter 30037279.65217521 ns/iter 1.21
GZIP_Decompress_ISO_Language_Set_3_Locations 4259130.222891029 ns/iter 2687888.8423075643 ns/iter 1.58
GZIP_Compress_ISO_Language_Set_3_Schema 2016913.1184970364 ns/iter 1738008.2803971043 ns/iter 1.16
GZIP_Decompress_ISO_Language_Set_3_Schema 380596.68875607743 ns/iter 201039.39403167117 ns/iter 1.89
HTML_Build_Table_100000 59268384.66666595 ns/iter 56958908.75000013 ns/iter 1.04
HTML_Render_Table_100000 1779348.4656489217 ns/iter 1818909.4583333323 ns/iter 0.98
JSONL_Parse_Large 13090424.811321529 ns/iter 9609428.42465718 ns/iter 1.36
JSONL_Parse_Large_GZIP 14440329.285713345 ns/iter 10756030.661538647 ns/iter 1.34
URITemplateRouter_Create 31064.29777620345 ns/iter 22620.534139243264 ns/iter 1.37
URITemplateRouter_Match 149.08558757588662 ns/iter 109.51545019186445 ns/iter 1.36
URITemplateRouter_Match_BasePath 170.7759016628244 ns/iter 122.78917916066068 ns/iter 1.39
URITemplateRouterView_Restore 7577.7151004825955 ns/iter 6764.773809296497 ns/iter 1.12
URITemplateRouterView_Match 121.71076894376179 ns/iter 93.48833589937176 ns/iter 1.30
URITemplateRouterView_Match_BasePath 141.90217903389103 ns/iter 105.1863243896071 ns/iter 1.35
URITemplateRouterView_Arguments 473.5032518459027 ns/iter 349.6553882348941 ns/iter 1.35
Pointer_Object_Traverse 29.631927447712535 ns/iter 22.84273392415635 ns/iter 1.30
Pointer_Object_Try_Traverse 23.082527181166107 ns/iter 17.716652110530575 ns/iter 1.30
Pointer_Push_Back_Pointer_To_Weak_Pointer 157.4865718223436 ns/iter 118.14695111642466 ns/iter 1.33
Pointer_Walker_Schema_ISO_Language 1870114.781333238 ns/iter 1575598.0131291058 ns/iter 1.19
Pointer_Maybe_Tracked_Deeply_Nested/0 1512528.0739131658 ns/iter 1199010.7594501432 ns/iter 1.26
Pointer_Maybe_Tracked_Deeply_Nested/1 1676727.5273160345 ns/iter 1272325.645454554 ns/iter 1.32
Pointer_Position_Tracker_Get_Deeply_Nested 606.600215104932 ns/iter 507.44725000033657 ns/iter 1.20
JSON_Array_Of_Objects_Unique 372.7146751515087 ns/iter 317.59911408424296 ns/iter 1.17
JSON_Parse_1 7733.105500989475 ns/iter 5915.593998723357 ns/iter 1.31
JSON_Parse_Real 6694.2617024124265 ns/iter 5176.3071216728795 ns/iter 1.29
JSON_Parse_Decimal 11216.519565461416 ns/iter 7551.953405520808 ns/iter 1.49
JSON_Parse_Schema_ISO_Language 5159233.881481332 ns/iter 4062762.5523254955 ns/iter 1.27
JSON_Parse_Integer 5150.486026765564 ns/iter 3680.9758305892783 ns/iter 1.40
JSON_Parse_String_NonSSO_Plain 8682.342121238002 ns/iter 6903.382235204857 ns/iter 1.26
JSON_Parse_String_SSO_Plain 3938.7384230148277 ns/iter 3048.3517985894205 ns/iter 1.29
JSON_Parse_String_Escape_Heavy 20620.443929921985 ns/iter 15091.41450396545 ns/iter 1.37
JSON_Parse_Object_Short_Keys 13869.680331626583 ns/iter 8731.198617574735 ns/iter 1.59
JSON_Parse_Object_Scalar_Properties 5903.65375586904 ns/iter 4462.917153952524 ns/iter 1.32
JSON_Parse_Object_Array_Properties 9379.641034888102 ns/iter 6894.905263786633 ns/iter 1.36
JSON_Parse_Object_Object_Properties 9697.2884977833 ns/iter 7240.147076196589 ns/iter 1.34
JSON_Parse_Nested_Containers 74362.34211378415 ns/iter 57917.92806221706 ns/iter 1.28
JSON_From_String_Copy 18.391468911506273 ns/iter 15.693078796732387 ns/iter 1.17
JSON_From_String_Temporary 15.425616329193407 ns/iter 13.236974635565259 ns/iter 1.17
JSON_Number_To_Double 21.86529849735696 ns/iter 15.64404092044896 ns/iter 1.40
JSON_Object_At_Last_Key/8 5.95478215525263 ns/iter 5.187050250904226 ns/iter 1.15
JSON_Object_At_Last_Key/32 21.81505553432901 ns/iter 18.277321311804364 ns/iter 1.19
JSON_Object_At_Last_Key/128 87.60759847974401 ns/iter 70.76871456952821 ns/iter 1.24
JSON_Object_At_Last_Key/512 425.7538571904003 ns/iter 293.63911866621515 ns/iter 1.45
JSON_Fast_Hash_Helm_Chart_Lock 62.299993025260605 ns/iter 43.386733117653066 ns/iter 1.44
JSON_Equality_Helm_Chart_Lock 157.69281023225108 ns/iter 130.30293916883116 ns/iter 1.21
JSON_Divisible_By_Decimal 238.19868518856964 ns/iter 179.20061336324625 ns/iter 1.33
JSON_String_Equal/10 5.651217382834431 ns/iter 4.128100721710022 ns/iter 1.37
JSON_String_Equal/100 6.276875206557681 ns/iter 4.946966923199685 ns/iter 1.27
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6238573744264533 ns/iter 0.5522205692874652 ns/iter 1.13
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.20391754727698 ns/iter 17.021777874960744 ns/iter 1.48
JSON_String_Fast_Hash/10 0.9346436091958958 ns/iter 0.8186003054006311 ns/iter 1.14
JSON_String_Fast_Hash/100 0.9358316010754757 ns/iter 0.8189646282408677 ns/iter 1.14
JSON_String_Key_Hash/10 1.2469163097770588 ns/iter 1.0923844952918647 ns/iter 1.14
JSON_String_Key_Hash/100 12.446089785608317 ns/iter 11.450702301644654 ns/iter 1.09
JSON_Object_Defines_Miss_Same_Length 3.42925259320499 ns/iter 3.0011606801466035 ns/iter 1.14
JSON_Object_Defines_Miss_Too_Small 3.430619434855489 ns/iter 3.0104568656531976 ns/iter 1.14
JSON_Object_Defines_Miss_Too_Large 3.1176421011471827 ns/iter 2.7296487339754365 ns/iter 1.14
Regex_Lower_S_Or_Upper_S_Asterisk 0.9346650453905919 ns/iter 0.8218622895124267 ns/iter 1.14
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.6243612514662947 ns/iter 0.5458860135702613 ns/iter 1.14
Regex_Period_Asterisk 0.6229038680860863 ns/iter 0.5457813102788068 ns/iter 1.14
Regex_Group_Period_Asterisk_Group 0.9346828902999194 ns/iter 0.8189932381879798 ns/iter 1.14
Regex_Period_Plus 0.9346705713540483 ns/iter 0.8186012456645647 ns/iter 1.14
Regex_Period 0.6246989243469148 ns/iter 0.548362647275189 ns/iter 1.14
Regex_Caret_Period_Plus_Dollar 0.6229524678098394 ns/iter 0.5463692661480365 ns/iter 1.14
Regex_Caret_Group_Period_Plus_Group_Dollar 0.9339105676942743 ns/iter 0.819140516747601 ns/iter 1.14
Regex_Caret_Period_Asterisk_Dollar 0.9348285020261806 ns/iter 0.8188897165892666 ns/iter 1.14
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.6232337539228721 ns/iter 0.5459610806941723 ns/iter 1.14
Regex_Caret_X_Hyphen 4.053781409673623 ns/iter 3.276313523308217 ns/iter 1.24
Regex_Period_Md_Dollar 29.83584280459029 ns/iter 31.77303946295621 ns/iter 0.94
Regex_Caret_Slash_Period_Asterisk 4.3548332690847005 ns/iter 3.0008695301419777 ns/iter 1.45
Regex_Caret_Period_Range_Dollar 0.7794884704549755 ns/iter 0.6519951041872005 ns/iter 1.20
Regex_Nested_Backtrack 37.18164702132533 ns/iter 33.514656357506595 ns/iter 1.11

This comment was automatically generated by workflow using github-action-benchmark.

@jviotti jviotti merged commit 976504f into main Jun 12, 2026
13 checks passed
@jviotti jviotti deleted the sha-284-512 branch June 12, 2026 20:22

@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: a765b23 Previous: 166a543 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.9937371059690414 ns/iter 1.7187108798256043 ns/iter 1.16
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.042786622934069 ns/iter 1.721386387163957 ns/iter 1.19
Regex_Period_Asterisk 1.996495056766103 ns/iter 1.71463098071464 ns/iter 1.16
Regex_Group_Period_Asterisk_Group 1.842075607088198 ns/iter 1.6786661022560803 ns/iter 1.10
Regex_Period_Plus 2.1246213961512024 ns/iter 2.0668393605705875 ns/iter 1.03
Regex_Period 2.088710967368746 ns/iter 2.01540496603029 ns/iter 1.04
Regex_Caret_Period_Plus_Dollar 2.052854704650881 ns/iter 2.0542355144943163 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.061108333643497 ns/iter 2.0581141654107213 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 1.7658849724878065 ns/iter 1.7175612563140448 ns/iter 1.03
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.714676695291557 ns/iter 1.768420493663475 ns/iter 0.97
Regex_Caret_X_Hyphen 6.105921891413713 ns/iter 6.116828577363353 ns/iter 1.00
Regex_Period_Md_Dollar 21.954058533216983 ns/iter 17.347023486716562 ns/iter 1.27
Regex_Caret_Slash_Period_Asterisk 4.4688199902950325 ns/iter 5.326270740834205 ns/iter 0.84
Regex_Caret_Period_Range_Dollar 2.0241126454236884 ns/iter 2.056638083270753 ns/iter 0.98
Regex_Nested_Backtrack 24.355142852987385 ns/iter 26.94100390610233 ns/iter 0.90
JSON_Array_Of_Objects_Unique 362.48923277883995 ns/iter 336.6000825807704 ns/iter 1.08
JSON_Parse_1 3656.376937857039 ns/iter 4019.017338960535 ns/iter 0.91
JSON_Parse_Real 5572.333749899727 ns/iter 5242.1084813362595 ns/iter 1.06
JSON_Parse_Decimal 5704.7494207189 ns/iter 5652.727888405143 ns/iter 1.01
JSON_Parse_Schema_ISO_Language 3108636.531249788 ns/iter 2893324.6192469825 ns/iter 1.07
JSON_Parse_Integer 3138.270562601413 ns/iter 3063.069354379238 ns/iter 1.02
JSON_Parse_String_NonSSO_Plain 3568.278324624376 ns/iter 3544.0540169292453 ns/iter 1.01
JSON_Parse_String_SSO_Plain 1794.4395773610622 ns/iter 1792.8877144208598 ns/iter 1.00
JSON_Parse_String_Escape_Heavy 17331.524289346355 ns/iter 16548.08717936653 ns/iter 1.05
JSON_Parse_Object_Short_Keys 5379.45499999978 ns/iter 5284.380646080102 ns/iter 1.02
JSON_Parse_Object_Scalar_Properties 2812.355645509298 ns/iter 2738.804383021092 ns/iter 1.03
JSON_Parse_Object_Array_Properties 3558.7123587574306 ns/iter 3500.8400780397587 ns/iter 1.02
JSON_Parse_Object_Object_Properties 3409.0773682331287 ns/iter 3521.284884724464 ns/iter 0.97
JSON_Parse_Nested_Containers 26140.25360977344 ns/iter 28320.55488661341 ns/iter 0.92
JSON_From_String_Copy 23.631295581857827 ns/iter 24.807288881860735 ns/iter 0.95
JSON_From_String_Temporary 18.743811947630743 ns/iter 21.011834683529532 ns/iter 0.89
JSON_Number_To_Double 31.415979721153146 ns/iter 33.32968128248696 ns/iter 0.94
JSON_Object_At_Last_Key/8 3.5587441305395418 ns/iter 3.684618747183944 ns/iter 0.97
JSON_Object_At_Last_Key/32 11.372100945489837 ns/iter 11.822615640419318 ns/iter 0.96
JSON_Object_At_Last_Key/128 57.08792520161299 ns/iter 53.897451252512816 ns/iter 1.06
JSON_Object_At_Last_Key/512 192.41199264891802 ns/iter 190.7627620076451 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 60.56980684836234 ns/iter 58.78813595698765 ns/iter 1.03
JSON_Equality_Helm_Chart_Lock 133.64338356777282 ns/iter 135.1090206260538 ns/iter 0.99
JSON_Divisible_By_Decimal 176.30181139827715 ns/iter 176.02426419872992 ns/iter 1.00
JSON_String_Equal/10 6.76268458762148 ns/iter 7.792110010931362 ns/iter 0.87
JSON_String_Equal/100 6.376616521146504 ns/iter 6.501065549205706 ns/iter 0.98
JSON_String_Equal_Small_By_Perfect_Hash/10 0.748810578925904 ns/iter 0.7429046385904543 ns/iter 1.01
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.4941422479827877 ns/iter 3.2588552453722817 ns/iter 1.07
JSON_String_Fast_Hash/10 2.624074366318334 ns/iter 2.350717682935632 ns/iter 1.12
JSON_String_Fast_Hash/100 2.1128738995335254 ns/iter 2.0066242132539016 ns/iter 1.05
JSON_String_Key_Hash/10 1.4165695401316771 ns/iter 1.3547241209200687 ns/iter 1.05
JSON_String_Key_Hash/100 2.291916416462991 ns/iter 2.1889207375216473 ns/iter 1.05
JSON_Object_Defines_Miss_Same_Length 2.2754292645584124 ns/iter 2.3774220613593053 ns/iter 0.96
JSON_Object_Defines_Miss_Too_Small 2.371903919356519 ns/iter 2.348972386738262 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Large 2.353649254682646 ns/iter 2.3437667794944277 ns/iter 1.00
Pointer_Object_Traverse 13.021893799593661 ns/iter 13.534033058829094 ns/iter 0.96
Pointer_Object_Try_Traverse 22.74326289362915 ns/iter 22.743021666406584 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 151.80391422647463 ns/iter 151.45848421934704 ns/iter 1.00
Pointer_Walker_Schema_ISO_Language 2497350.620567608 ns/iter 2239567.1006494197 ns/iter 1.12
Pointer_Maybe_Tracked_Deeply_Nested/0 859939.8936431345 ns/iter 881707.0440475813 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/1 1193024.0329152583 ns/iter 1191108.2692308112 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 336.7080476387508 ns/iter 348.51223062154185 ns/iter 0.97
URITemplateRouter_Create 23273.51407573435 ns/iter 23020.14479956309 ns/iter 1.01
URITemplateRouter_Match 166.2045862232607 ns/iter 159.0929082841635 ns/iter 1.04
URITemplateRouter_Match_BasePath 184.54639293596074 ns/iter 184.51780000761875 ns/iter 1.00
URITemplateRouterView_Restore 9122.41352743435 ns/iter 9096.794158161043 ns/iter 1.00
URITemplateRouterView_Match 127.25179124394133 ns/iter 133.99211637682674 ns/iter 0.95
URITemplateRouterView_Match_BasePath 142.0510852671241 ns/iter 151.33699247839897 ns/iter 0.94
URITemplateRouterView_Arguments 408.34756218393704 ns/iter 419.5847919923611 ns/iter 0.97
JSONL_Parse_Large 12269835.820000026 ns/iter 12978887.421053387 ns/iter 0.95
JSONL_Parse_Large_GZIP 13230617.553570515 ns/iter 13930072.705882005 ns/iter 0.95
HTML_Build_Table_100000 61956181.81818025 ns/iter 63281030.2727297 ns/iter 0.98
HTML_Render_Table_100000 3086190.959409769 ns/iter 4512921.692606704 ns/iter 0.68
GZIP_Compress_ISO_Language_Set_3_Locations 26894108.03703949 ns/iter 26715017.61538436 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Locations 5960945.830000809 ns/iter 5781623.091602793 ns/iter 1.03
GZIP_Compress_ISO_Language_Set_3_Schema 1555674.3603603132 ns/iter 1544403.907923071 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Schema 268907.1622239351 ns/iter 283675.96092564747 ns/iter 0.95

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: a765b23 Previous: 166a543 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4953853571462656 ns/iter 5.0768642857081305 ns/iter 0.49
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.3910764285704187 ns/iter 5.1235820000056265 ns/iter 0.47
Regex_Period_Asterisk 2.3945075866143903 ns/iter 5.023183000002973 ns/iter 0.48
Regex_Group_Period_Asterisk_Group 2.431694528537495 ns/iter 5.013070000004518 ns/iter 0.49
Regex_Period_Plus 2.5312164285748753 ns/iter 5.084963392854596 ns/iter 0.50
Regex_Period 2.6358074976464447 ns/iter 5.025146428571198 ns/iter 0.52
Regex_Caret_Period_Plus_Dollar 2.516514999998825 ns/iter 5.177899000000252 ns/iter 0.49
Regex_Caret_Group_Period_Plus_Group_Dollar 2.627097499998854 ns/iter 5.02010700000028 ns/iter 0.52
Regex_Caret_Period_Asterisk_Dollar 2.451465733872519 ns/iter 5.021701785714023 ns/iter 0.49
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.3922140598282713 ns/iter 5.028880999998364 ns/iter 0.48
Regex_Caret_X_Hyphen 5.8663589999923715 ns/iter 8.188911830363363 ns/iter 0.72
Regex_Period_Md_Dollar 30.699098214280898 ns/iter 44.292424604528705 ns/iter 0.69
Regex_Caret_Slash_Period_Asterisk 5.9848178571460915 ns/iter 7.85964620536309 ns/iter 0.76
Regex_Caret_Period_Range_Dollar 2.6776677208211184 ns/iter 5.646600000000035 ns/iter 0.47
Regex_Nested_Backtrack 40.90466885138652 ns/iter 59.548580357094195 ns/iter 0.69
JSON_Array_Of_Objects_Unique 395.60344721352294 ns/iter 478.4439934374844 ns/iter 0.83
JSON_Parse_1 7679.716517848029 ns/iter 8835.919642860646 ns/iter 0.87
JSON_Parse_Real 12149.528571431541 ns/iter 16035.013627320292 ns/iter 0.76
JSON_Parse_Decimal 9334.174401027887 ns/iter 11859.948214285916 ns/iter 0.79
JSON_Parse_Schema_ISO_Language 7684941.111114716 ns/iter 7482391.111110095 ns/iter 1.03
JSON_Parse_Integer 4516.099345491908 ns/iter 6183.227678572426 ns/iter 0.73
JSON_Parse_String_NonSSO_Plain 6593.250000004706 ns/iter 7695.227678579743 ns/iter 0.86
JSON_Parse_String_SSO_Plain 2895.1175021797044 ns/iter 3707.1040944558763 ns/iter 0.78
JSON_Parse_String_Escape_Heavy 23286.846875009815 ns/iter 21524.313736846674 ns/iter 1.08
JSON_Parse_Object_Short_Keys 9293.521903928047 ns/iter 13268.0581783171 ns/iter 0.70
JSON_Parse_Object_Scalar_Properties 4868.14677959362 ns/iter 6850.55624999872 ns/iter 0.71
JSON_Parse_Object_Array_Properties 8870.788969693342 ns/iter 11451.7750000037 ns/iter 0.77
JSON_Parse_Object_Object_Properties 8886.569702827146 ns/iter 11561.825000001136 ns/iter 0.77
JSON_Parse_Nested_Containers 65485.0714285463 ns/iter 79217.26562502483 ns/iter 0.83
JSON_From_String_Copy 47.311018913193905 ns/iter 64.04144642853485 ns/iter 0.74
JSON_From_String_Temporary 53.22885999994469 ns/iter 57.980339285726195 ns/iter 0.92
JSON_Number_To_Double 89.0541388815766 ns/iter 119.27240624999058 ns/iter 0.75
JSON_Object_At_Last_Key/8 6.737686607136441 ns/iter 7.160025000002537 ns/iter 0.94
JSON_Object_At_Last_Key/32 20.849987500014322 ns/iter 23.30276424885714 ns/iter 0.89
JSON_Object_At_Last_Key/128 95.59717187499928 ns/iter 90.4691745326387 ns/iter 1.06
JSON_Object_At_Last_Key/512 316.9783151527871 ns/iter 424.0923207288271 ns/iter 0.75
JSON_Fast_Hash_Helm_Chart_Lock 48.515285714237116 ns/iter 63.98360714285901 ns/iter 0.76
JSON_Equality_Helm_Chart_Lock 256.33527037235524 ns/iter 304.25348214302113 ns/iter 0.84
JSON_Divisible_By_Decimal 269.39831386655686 ns/iter 294.1211546740844 ns/iter 0.92
JSON_String_Equal/10 11.146994642850975 ns/iter 15.689584821428427 ns/iter 0.71
JSON_String_Equal/100 13.83155350971186 ns/iter 17.264428679051044 ns/iter 0.80
JSON_String_Equal_Small_By_Perfect_Hash/10 1.1817898214303568 ns/iter 2.513987857144327 ns/iter 0.47
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.615665582062613 ns/iter 15.023122767843235 ns/iter 0.64
JSON_String_Fast_Hash/10 2.334142296504215 ns/iter 5.027247999996689 ns/iter 0.46
JSON_String_Fast_Hash/100 2.3337231000694043 ns/iter 5.026182000001427 ns/iter 0.46
JSON_String_Key_Hash/10 2.915050397879215 ns/iter 5.349058928572958 ns/iter 0.54
JSON_String_Key_Hash/100 7.893146428581791 ns/iter 11.872544642853557 ns/iter 0.66
JSON_Object_Defines_Miss_Same_Length 4.951743000001443 ns/iter 5.030267000001913 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Small 4.644148671632209 ns/iter 4.084584821428499 ns/iter 1.14
JSON_Object_Defines_Miss_Too_Large 3.5759600382565075 ns/iter 4.079193980495933 ns/iter 0.88
Pointer_Object_Traverse 47.107786514900546 ns/iter 67.19350446431349 ns/iter 0.70
Pointer_Object_Try_Traverse 50.162060000002384 ns/iter 67.58003571430241 ns/iter 0.74
Pointer_Push_Back_Pointer_To_Weak_Pointer 182.39243632084754 ns/iter 170.34498015705748 ns/iter 1.07
Pointer_Walker_Schema_ISO_Language 7836123.333335208 ns/iter 7959167.777769634 ns/iter 0.98
Pointer_Maybe_Tracked_Deeply_Nested/0 2179890.3571379925 ns/iter 2573444.5783138406 ns/iter 0.85
Pointer_Maybe_Tracked_Deeply_Nested/1 3907502.793293403 ns/iter 3618900.534759287 ns/iter 1.08
Pointer_Position_Tracker_Get_Deeply_Nested 525.7383445914659 ns/iter 556.3688616072276 ns/iter 0.94
URITemplateRouter_Create 38944.88281253367 ns/iter 40284.574313730016 ns/iter 0.97
URITemplateRouter_Match 224.6703437498354 ns/iter 191.64990104037173 ns/iter 1.17
URITemplateRouter_Match_BasePath 255.069785714243 ns/iter 216.07258410401113 ns/iter 1.18
URITemplateRouterView_Restore 23810.640506219712 ns/iter 32148.01339286818 ns/iter 0.74
URITemplateRouterView_Match 159.67637899629304 ns/iter 155.31691964270067 ns/iter 1.03
URITemplateRouterView_Match_BasePath 179.2549807539917 ns/iter 172.79974817861486 ns/iter 1.04
URITemplateRouterView_Arguments 440.05200000015066 ns/iter 529.4164000006276 ns/iter 0.83
JSONL_Parse_Large 27245242.307729382 ns/iter 32773942.85716929 ns/iter 0.83
JSONL_Parse_Large_GZIP 27531132.00000371 ns/iter 33520735.000001878 ns/iter 0.82
HTML_Build_Table_100000 93018628.57137166 ns/iter 87588233.33331141 ns/iter 1.06
HTML_Render_Table_100000 12465383.928559145 ns/iter 7260536.666662019 ns/iter 1.72
GZIP_Compress_ISO_Language_Set_3_Locations 33780814.999954596 ns/iter 35797150.00000761 ns/iter 0.94
GZIP_Decompress_ISO_Language_Set_3_Locations 11666210.937505638 ns/iter 9526821.333323218 ns/iter 1.22
GZIP_Compress_ISO_Language_Set_3_Schema 2015446.9565212543 ns/iter 2090003.4782612964 ns/iter 0.96
GZIP_Decompress_ISO_Language_Set_3_Schema 637553.1250000676 ns/iter 598338.2142858318 ns/iter 1.07

This comment was automatically generated by workflow using github-action-benchmark.

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