Skip to content

Implement Base64 and Base64url#2493

Merged
jviotti merged 2 commits into
mainfrom
base64
Jun 12, 2026
Merged

Implement Base64 and Base64url#2493
jviotti merged 2 commits into
mainfrom
base64

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>

@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 6 files

Re-trigger cubic

@augmentcode

augmentcode Bot commented Jun 12, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds Base64 and Base64url codec support to the Sourcemeta Core crypto module.

Changes:

  • Introduces a new implementation file crypto_base64.cc providing RFC 4648 Base64 (padded) and Base64url (unpadded) encode/decode routines.
  • Adds a public header crypto_base64.h exporting base64_encode/base64_decode and base64url_encode/base64url_decode APIs (including stream overloads).
  • Updates the crypto umbrella header crypto.h to include the new Base64 API.
  • Wires the new source/header into the crypto library CMake target.
  • Adds a comprehensive GoogleTest suite with RFC 4648 Section 10 vectors and additional canonicalization/invalid-input cases.
  • Includes Base64url coverage with an RFC 7515 Appendix C test vector.

Technical Notes: Decoding returns std::nullopt unless the input is a canonical encoding (including rejecting non-zero pad bits), which aligns with the header documentation.

🤖 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. No suggestions at this time.

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

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 (windows/msvc)

Details
Benchmark suite Current: 9c1d437 Previous: eb361a9 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.132043081501231 ns/iter 5.102792857143307 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.0833892857156115 ns/iter 5.033824978801934 ns/iter 1.01
Regex_Period_Asterisk 5.0939758928580305 ns/iter 5.029249000000391 ns/iter 1.01
Regex_Group_Period_Asterisk_Group 5.071139285714058 ns/iter 5.0421159999996235 ns/iter 1.01
Regex_Period_Plus 5.0840749999991885 ns/iter 5.0287200000002485 ns/iter 1.01
Regex_Period 5.04024900000104 ns/iter 5.032540178570497 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 5.065360714285458 ns/iter 5.036351999999624 ns/iter 1.01
Regex_Caret_Group_Period_Plus_Group_Dollar 5.019604464286382 ns/iter 5.036600999999337 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 5.098305999999866 ns/iter 5.028376999999864 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.117107000000942 ns/iter 5.049280693090781 ns/iter 1.01
Regex_Caret_X_Hyphen 8.163563616070086 ns/iter 8.197604910714166 ns/iter 1.00
Regex_Period_Md_Dollar 44.987848482256354 ns/iter 44.60737390472763 ns/iter 1.01
Regex_Caret_Slash_Period_Asterisk 8.022534598214495 ns/iter 7.985927455357152 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 5.786539000000631 ns/iter 5.662958928570763 ns/iter 1.02
Regex_Nested_Backtrack 61.52188999999453 ns/iter 59.33741964285438 ns/iter 1.04
JSON_Array_Of_Objects_Unique 484.76031390265797 ns/iter 486.1190370801862 ns/iter 1.00
JSON_Parse_1 8838.655631003168 ns/iter 8874.363839286303 ns/iter 1.00
JSON_Parse_Real 16415.243303572628 ns/iter 16099.324772264437 ns/iter 1.02
JSON_Parse_Decimal 11984.032142854467 ns/iter 11918.928124998729 ns/iter 1.01
JSON_Parse_Schema_ISO_Language 7566899.999998457 ns/iter 7698033.333333065 ns/iter 0.98
JSON_Parse_Integer 6172.457999998642 ns/iter 6274.233035714108 ns/iter 0.98
JSON_Parse_String_NonSSO_Plain 7865.883188021567 ns/iter 7766.061383927943 ns/iter 1.01
JSON_Parse_String_SSO_Plain 3766.7793450372574 ns/iter 3734.7668944415454 ns/iter 1.01
JSON_Parse_String_Escape_Heavy 21736.012499999903 ns/iter 21672.81875000171 ns/iter 1.00
JSON_Parse_Object_Short_Keys 13398.615854394271 ns/iter 13329.247860500665 ns/iter 1.01
JSON_Parse_Object_Scalar_Properties 6839.337053570204 ns/iter 6848.954464285636 ns/iter 1.00
JSON_Parse_Object_Array_Properties 11512.382812501444 ns/iter 11472.331249999357 ns/iter 1.00
JSON_Parse_Object_Object_Properties 11537.082142857409 ns/iter 11625.196428572135 ns/iter 0.99
JSON_Parse_Nested_Containers 79453.28124999866 ns/iter 78142.47767857299 ns/iter 1.02
JSON_From_String_Copy 65.5810624999934 ns/iter 65.68279464285557 ns/iter 1.00
JSON_From_String_Temporary 57.821598214299485 ns/iter 59.47039285714035 ns/iter 0.97
JSON_Number_To_Double 119.306160714286 ns/iter 145.66128571429107 ns/iter 0.82
JSON_Object_At_Last_Key/8 7.22959151785726 ns/iter 8.60395178571492 ns/iter 0.84
JSON_Object_At_Last_Key/32 23.61263437499872 ns/iter 28.210443624057657 ns/iter 0.84
JSON_Object_At_Last_Key/128 88.91473263775163 ns/iter 89.74265625000096 ns/iter 0.99
JSON_Object_At_Last_Key/512 460.795752802957 ns/iter 427.91782355860437 ns/iter 1.08
JSON_Fast_Hash_Helm_Chart_Lock 66.4043750000027 ns/iter 64.05683928570787 ns/iter 1.04
JSON_Equality_Helm_Chart_Lock 342.11486747944014 ns/iter 305.2427695041565 ns/iter 1.12
JSON_Divisible_By_Decimal 308.3001575557826 ns/iter 297.1360896053291 ns/iter 1.04
JSON_String_Equal/10 16.88902667261913 ns/iter 15.748988839285566 ns/iter 1.07
JSON_String_Equal/100 17.115943412167287 ns/iter 16.953826002539813 ns/iter 1.01
JSON_String_Equal_Small_By_Perfect_Hash/10 2.532442564703469 ns/iter 2.5220342857145233 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 15.125197030692284 ns/iter 15.066910714285342 ns/iter 1.00
JSON_String_Fast_Hash/10 5.067363000000569 ns/iter 5.036225999999715 ns/iter 1.01
JSON_String_Fast_Hash/100 5.0543549999997595 ns/iter 5.047062499999454 ns/iter 1.00
JSON_String_Key_Hash/10 5.483105000000705 ns/iter 5.345734821428241 ns/iter 1.03
JSON_String_Key_Hash/100 12.003442857141929 ns/iter 11.915628125001021 ns/iter 1.01
JSON_Object_Defines_Miss_Same_Length 5.221976000000268 ns/iter 5.036003000000164 ns/iter 1.04
JSON_Object_Defines_Miss_Too_Small 4.300378906250758 ns/iter 4.085516741071541 ns/iter 1.05
JSON_Object_Defines_Miss_Too_Large 4.169685007445763 ns/iter 4.102069918039662 ns/iter 1.02
Pointer_Object_Traverse 68.6572209821585 ns/iter 67.5408928571462 ns/iter 1.02
Pointer_Object_Try_Traverse 68.75719866071351 ns/iter 67.94952678571268 ns/iter 1.01
Pointer_Push_Back_Pointer_To_Weak_Pointer 172.24745535711708 ns/iter 165.24554677983616 ns/iter 1.04
Pointer_Walker_Schema_ISO_Language 7580351.111111364 ns/iter 7322744.444444299 ns/iter 1.04
Pointer_Maybe_Tracked_Deeply_Nested/0 2560004.9242424313 ns/iter 2468950.3787883357 ns/iter 1.04
Pointer_Maybe_Tracked_Deeply_Nested/1 3668376.4102562214 ns/iter 3714639.5721929315 ns/iter 0.99
Pointer_Position_Tracker_Get_Deeply_Nested 540.2393749999338 ns/iter 500.7953501686383 ns/iter 1.08
URITemplateRouter_Create 40995.171493233254 ns/iter 40952.359120187866 ns/iter 1.00
URITemplateRouter_Match 196.77634835818145 ns/iter 191.094231347675 ns/iter 1.03
URITemplateRouter_Match_BasePath 221.57084375002967 ns/iter 217.44103125001854 ns/iter 1.02
URITemplateRouterView_Restore 35144.264388129384 ns/iter 32530.731730187734 ns/iter 1.08
URITemplateRouterView_Match 157.62372767856698 ns/iter 156.71995535712873 ns/iter 1.01
URITemplateRouterView_Match_BasePath 174.9917438610459 ns/iter 172.57996914598954 ns/iter 1.01
URITemplateRouterView_Arguments 532.7660714284223 ns/iter 532.5437499999047 ns/iter 1.00
JSONL_Parse_Large 33391061.904759616 ns/iter 32762538.095236477 ns/iter 1.02
JSONL_Parse_Large_GZIP 33879515.000001 ns/iter 34025229.99999747 ns/iter 1.00
HTML_Build_Table_100000 87158771.42857866 ns/iter 89580428.57141533 ns/iter 0.97
HTML_Render_Table_100000 7087349.107142212 ns/iter 7741096.666667445 ns/iter 0.92
GZIP_Compress_ISO_Language_Set_3_Locations 36255157.89473722 ns/iter 36109705.26315932 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 9451568.000001013 ns/iter 9873635.937502457 ns/iter 0.96
GZIP_Compress_ISO_Language_Set_3_Schema 2092135.0724640198 ns/iter 2134258.1249996326 ns/iter 0.98
GZIP_Decompress_ISO_Language_Set_3_Schema 626192.4999999938 ns/iter 618577.2321428219 ns/iter 1.01

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

@jviotti jviotti merged commit 88b3837 into main Jun 12, 2026
13 checks passed
@jviotti jviotti deleted the base64 branch June 12, 2026 19:19

@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: 9c1d437 Previous: eb361a9 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.4786232563196466 ns/iter 2.0480334860842957 ns/iter 1.21
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.8887746645450518 ns/iter 1.736070980577428 ns/iter 1.09
Regex_Period_Asterisk 1.9227190366325269 ns/iter 1.6988240018750094 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 2.3897219793354236 ns/iter 1.686770912318794 ns/iter 1.42
Regex_Period_Plus 2.8322174208304602 ns/iter 2.043399311864394 ns/iter 1.39
Regex_Period 2.4896875418145163 ns/iter 2.033988830281582 ns/iter 1.22
Regex_Caret_Period_Plus_Dollar 2.711056116504498 ns/iter 2.0481242830561586 ns/iter 1.32
Regex_Caret_Group_Period_Plus_Group_Dollar 3.074021495168777 ns/iter 2.4955802092295643 ns/iter 1.23
Regex_Caret_Period_Asterisk_Dollar 2.4133240830198037 ns/iter 1.7191205564717158 ns/iter 1.40
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.190329481445559 ns/iter 1.814876274046937 ns/iter 1.21
Regex_Caret_X_Hyphen 7.676282881744089 ns/iter 6.141500093915083 ns/iter 1.25
Regex_Period_Md_Dollar 22.553633100518454 ns/iter 17.1721603354861 ns/iter 1.31
Regex_Caret_Slash_Period_Asterisk 5.239463990029718 ns/iter 4.494053768457255 ns/iter 1.17
Regex_Caret_Period_Range_Dollar 2.367228511739332 ns/iter 2.045731180038056 ns/iter 1.16
Regex_Nested_Backtrack 29.22931092200359 ns/iter 24.981394739418953 ns/iter 1.17
JSON_Array_Of_Objects_Unique 482.6891173906668 ns/iter 426.2338655639395 ns/iter 1.13
JSON_Parse_1 5197.996541335054 ns/iter 3672.527113872711 ns/iter 1.42
JSON_Parse_Real 6886.735789160358 ns/iter 5151.621379619775 ns/iter 1.34
JSON_Parse_Decimal 8080.631843783427 ns/iter 5815.0248156724865 ns/iter 1.39
JSON_Parse_Schema_ISO_Language 5885814.618644394 ns/iter 3510706.477777603 ns/iter 1.68
JSON_Parse_Integer 3941.244639315135 ns/iter 3001.3568197390528 ns/iter 1.31
JSON_Parse_String_NonSSO_Plain 5151.22500000075 ns/iter 3528.201956258153 ns/iter 1.46
JSON_Parse_String_SSO_Plain 2216.18045102646 ns/iter 1792.8156973027703 ns/iter 1.24
JSON_Parse_String_Escape_Heavy 21655.18559484805 ns/iter 17609.808210925905 ns/iter 1.23
JSON_Parse_Object_Short_Keys 7113.736824209181 ns/iter 5492.414977870197 ns/iter 1.30
JSON_Parse_Object_Scalar_Properties 3746.055887525411 ns/iter 3062.9710415212576 ns/iter 1.22
JSON_Parse_Object_Array_Properties 4516.006379130293 ns/iter 3763.696277889339 ns/iter 1.20
JSON_Parse_Object_Object_Properties 5025.178749999668 ns/iter 3592.0663167331936 ns/iter 1.40
JSON_Parse_Nested_Containers 37005.407570154 ns/iter 28188.69231081898 ns/iter 1.31
JSON_From_String_Copy 32.49362054671014 ns/iter 24.43684310057352 ns/iter 1.33
JSON_From_String_Temporary 29.129933561279568 ns/iter 23.438640731365954 ns/iter 1.24
JSON_Number_To_Double 49.070885247077435 ns/iter 33.898602209126196 ns/iter 1.45
JSON_Object_At_Last_Key/8 4.938513477559026 ns/iter 3.7711164802666954 ns/iter 1.31
JSON_Object_At_Last_Key/32 17.629612987004073 ns/iter 11.936008626686217 ns/iter 1.48
JSON_Object_At_Last_Key/128 84.56144709264838 ns/iter 55.74430133902276 ns/iter 1.52
JSON_Object_At_Last_Key/512 273.47079737859553 ns/iter 190.85160563758322 ns/iter 1.43
JSON_Fast_Hash_Helm_Chart_Lock 73.90044050384195 ns/iter 60.279710496135 ns/iter 1.23
JSON_Equality_Helm_Chart_Lock 171.3102728837038 ns/iter 135.26315883268845 ns/iter 1.27
JSON_Divisible_By_Decimal 251.30482983394253 ns/iter 172.75809175020123 ns/iter 1.45
JSON_String_Equal/10 8.358178861999125 ns/iter 6.826852450246425 ns/iter 1.22
JSON_String_Equal/100 8.551090467527715 ns/iter 6.689390329539048 ns/iter 1.28
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9604421880708325 ns/iter 0.7615035271708004 ns/iter 1.26
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.409093953973076 ns/iter 3.431425717481296 ns/iter 1.28
JSON_String_Fast_Hash/10 2.898616338898008 ns/iter 2.8267364843227 ns/iter 1.03
JSON_String_Fast_Hash/100 2.481264024925864 ns/iter 2.10208923297803 ns/iter 1.18
JSON_String_Key_Hash/10 2.163784626589588 ns/iter 1.709519427532116 ns/iter 1.27
JSON_String_Key_Hash/100 3.1725175224799176 ns/iter 2.507164598316038 ns/iter 1.27
JSON_Object_Defines_Miss_Same_Length 2.9830372642153336 ns/iter 2.434945138676961 ns/iter 1.23
JSON_Object_Defines_Miss_Too_Small 2.9641616780324993 ns/iter 2.408849361147837 ns/iter 1.23
JSON_Object_Defines_Miss_Too_Large 3.0331905394041843 ns/iter 2.4012835903742564 ns/iter 1.26
Pointer_Object_Traverse 17.333647940394336 ns/iter 13.995362269564222 ns/iter 1.24
Pointer_Object_Try_Traverse 26.485018156034435 ns/iter 23.776843339677715 ns/iter 1.11
Pointer_Push_Back_Pointer_To_Weak_Pointer 176.74868579829376 ns/iter 166.00548752927384 ns/iter 1.06
Pointer_Walker_Schema_ISO_Language 3153123.4817815754 ns/iter 2848434.5983602516 ns/iter 1.11
Pointer_Maybe_Tracked_Deeply_Nested/0 1183412.38472226 ns/iter 957982.286096051 ns/iter 1.24
Pointer_Maybe_Tracked_Deeply_Nested/1 1645343.1554404292 ns/iter 1579781.0630628446 ns/iter 1.04
Pointer_Position_Tracker_Get_Deeply_Nested 401.26761592824414 ns/iter 415.42882201962067 ns/iter 0.97
URITemplateRouter_Create 27877.333212998947 ns/iter 24551.89226928897 ns/iter 1.14
URITemplateRouter_Match 193.92533536242803 ns/iter 165.2269010490073 ns/iter 1.17
URITemplateRouter_Match_BasePath 221.15412121521103 ns/iter 197.547482699602 ns/iter 1.12
URITemplateRouterView_Restore 12210.808098352154 ns/iter 9518.514013890383 ns/iter 1.28
URITemplateRouterView_Match 149.66529147184804 ns/iter 131.13130979105182 ns/iter 1.14
URITemplateRouterView_Match_BasePath 176.2278126605362 ns/iter 152.4101660925742 ns/iter 1.16
URITemplateRouterView_Arguments 595.8374762414601 ns/iter 454.6840147508617 ns/iter 1.31
JSONL_Parse_Large 18910656.250000104 ns/iter 14485312.957450777 ns/iter 1.31
JSONL_Parse_Large_GZIP 18936600.806451652 ns/iter 14805916.666662393 ns/iter 1.28
HTML_Build_Table_100000 86736690.42856805 ns/iter 77295508.29999426 ns/iter 1.12
HTML_Render_Table_100000 6335683.179244979 ns/iter 5324982.57272726 ns/iter 1.19
GZIP_Compress_ISO_Language_Set_3_Locations 31425143.954544928 ns/iter 32758250.00000054 ns/iter 0.96
GZIP_Decompress_ISO_Language_Set_3_Locations 6420278.487180207 ns/iter 6049930.443550106 ns/iter 1.06
GZIP_Compress_ISO_Language_Set_3_Schema 1664219.8836631123 ns/iter 1631132.468208049 ns/iter 1.02
GZIP_Decompress_ISO_Language_Set_3_Schema 371327.2032992019 ns/iter 286332.3708958471 ns/iter 1.30

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: 9c1d437 Previous: eb361a9 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.0242859140674008 ns/iter 2.5088185531204013 ns/iter 0.81
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.016126733003654 ns/iter 2.4632341930339408 ns/iter 0.82
Regex_Period_Asterisk 2.018080187594657 ns/iter 2.4609634847670865 ns/iter 0.82
Regex_Group_Period_Asterisk_Group 2.0171369780131068 ns/iter 2.4601912942345705 ns/iter 0.82
Regex_Period_Plus 2.125318476240345 ns/iter 3.873918478949037 ns/iter 0.55
Regex_Period 2.1364979226897765 ns/iter 3.5138419575738586 ns/iter 0.61
Regex_Caret_Period_Plus_Dollar 2.1405630585904616 ns/iter 3.5155061691340244 ns/iter 0.61
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0918164178624266 ns/iter 3.86768468518438 ns/iter 0.54
Regex_Caret_Period_Asterisk_Dollar 2.017730367996543 ns/iter 2.813738175004624 ns/iter 0.72
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.0174607595165432 ns/iter 2.461478825471886 ns/iter 0.82
Regex_Caret_X_Hyphen 3.751664723903771 ns/iter 6.68063726949272 ns/iter 0.56
Regex_Period_Md_Dollar 24.712584597170057 ns/iter 27.291596317485144 ns/iter 0.91
Regex_Caret_Slash_Period_Asterisk 4.038982756068339 ns/iter 7.603717741343694 ns/iter 0.53
Regex_Caret_Period_Range_Dollar 2.2959784380671424 ns/iter 3.5163697668268483 ns/iter 0.65
Regex_Nested_Backtrack 33.510752920509965 ns/iter 37.80038636551075 ns/iter 0.89
JSON_Array_Of_Objects_Unique 380.8517861756639 ns/iter 498.4950051526385 ns/iter 0.76
JSON_Parse_1 4547.601767326339 ns/iter 4571.268674463109 ns/iter 0.99
JSON_Parse_Real 4753.900174001095 ns/iter 5217.337243248212 ns/iter 0.91
JSON_Parse_Decimal 7262.678100264259 ns/iter 7430.806292144088 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 3441250.0048076184 ns/iter 3477565.0899996436 ns/iter 0.99
JSON_Parse_Integer 3669.474998032609 ns/iter 3955.7120275896964 ns/iter 0.93
JSON_Parse_String_NonSSO_Plain 4600.706223435158 ns/iter 5074.820500616058 ns/iter 0.91
JSON_Parse_String_SSO_Plain 2473.16848004552 ns/iter 2734.7381072349885 ns/iter 0.90
JSON_Parse_String_Escape_Heavy 15973.048314912623 ns/iter 14541.531250645156 ns/iter 1.10
JSON_Parse_Object_Short_Keys 6967.902226041142 ns/iter 7851.92425191205 ns/iter 0.89
JSON_Parse_Object_Scalar_Properties 3703.485096574252 ns/iter 4089.749571653568 ns/iter 0.91
JSON_Parse_Object_Array_Properties 5236.559865515548 ns/iter 5496.281122569987 ns/iter 0.95
JSON_Parse_Object_Object_Properties 5151.359319564149 ns/iter 5613.01503867656 ns/iter 0.92
JSON_Parse_Nested_Containers 41297.87335729853 ns/iter 44565.544627518626 ns/iter 0.93
JSON_From_String_Copy 15.648838750396639 ns/iter 21.111214843917725 ns/iter 0.74
JSON_From_String_Temporary 14.890779431513677 ns/iter 18.30360607232919 ns/iter 0.81
JSON_Number_To_Double 20.75355377359746 ns/iter 22.942147670718025 ns/iter 0.90
JSON_Object_At_Last_Key/8 4.688979826983428 ns/iter 3.9551191954104077 ns/iter 1.19
JSON_Object_At_Last_Key/32 17.965666512656988 ns/iter 13.020783843537991 ns/iter 1.38
JSON_Object_At_Last_Key/128 75.60739103735474 ns/iter 46.88595671774934 ns/iter 1.61
JSON_Object_At_Last_Key/512 305.28034902604844 ns/iter 368.0635866847323 ns/iter 0.83
JSON_Fast_Hash_Helm_Chart_Lock 50.53216286916796 ns/iter 68.57774443168591 ns/iter 0.74
JSON_Equality_Helm_Chart_Lock 152.19144225699804 ns/iter 190.79351901703834 ns/iter 0.80
JSON_Divisible_By_Decimal 255.54112178907255 ns/iter 257.346718025424 ns/iter 0.99
JSON_String_Equal/10 4.8999772973238045 ns/iter 6.3300493914612685 ns/iter 0.77
JSON_String_Equal/100 6.049196398168669 ns/iter 7.038506045800025 ns/iter 0.86
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8645044720490132 ns/iter 1.0565556498325503 ns/iter 0.82
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.805195125382342 ns/iter 12.346432844093213 ns/iter 0.79
JSON_String_Fast_Hash/10 2.074272587826414 ns/iter 2.111280390986919 ns/iter 0.98
JSON_String_Fast_Hash/100 2.1227768676578425 ns/iter 2.1172057603956906 ns/iter 1.00
JSON_String_Key_Hash/10 1.7290307251944335 ns/iter 2.462918240390845 ns/iter 0.70
JSON_String_Key_Hash/100 6.623499837312581 ns/iter 7.738364471266381 ns/iter 0.86
JSON_Object_Defines_Miss_Same_Length 3.168061656341367 ns/iter 2.923850445149126 ns/iter 1.08
JSON_Object_Defines_Miss_Too_Small 4.231476743994812 ns/iter 4.222291877516078 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.1684732376803186 ns/iter 2.91872821193456 ns/iter 1.09
Pointer_Object_Traverse 23.66976304849395 ns/iter 25.5226631570309 ns/iter 0.93
Pointer_Object_Try_Traverse 36.43532533065076 ns/iter 30.62235203430824 ns/iter 1.19
Pointer_Push_Back_Pointer_To_Weak_Pointer 164.13379164064736 ns/iter 165.89435137003693 ns/iter 0.99
Pointer_Walker_Schema_ISO_Language 1792307.5999999875 ns/iter 1801931.3153847458 ns/iter 0.99
Pointer_Maybe_Tracked_Deeply_Nested/0 1089608.7406831894 ns/iter 1272377.1005385371 ns/iter 0.86
Pointer_Maybe_Tracked_Deeply_Nested/1 1846924.7632980752 ns/iter 2142370.8240741203 ns/iter 0.86
Pointer_Position_Tracker_Get_Deeply_Nested 693.7907211906611 ns/iter 758.8061281163646 ns/iter 0.91
URITemplateRouter_Create 29016.706801275286 ns/iter 29350.026166191947 ns/iter 0.99
URITemplateRouter_Match 166.9658507358851 ns/iter 177.05819209278295 ns/iter 0.94
URITemplateRouter_Match_BasePath 180.67285992027138 ns/iter 211.06588496359825 ns/iter 0.86
URITemplateRouterView_Restore 3443.3047488059933 ns/iter 8700.847890934321 ns/iter 0.40
URITemplateRouterView_Match 125.71196225193985 ns/iter 145.1360050547133 ns/iter 0.87
URITemplateRouterView_Match_BasePath 141.54508653710207 ns/iter 164.28460995385092 ns/iter 0.86
URITemplateRouterView_Arguments 419.70826596352373 ns/iter 456.54208574407676 ns/iter 0.92
JSONL_Parse_Large 8965708.423076171 ns/iter 9176915.223684702 ns/iter 0.98
JSONL_Parse_Large_GZIP 10410094.13432818 ns/iter 10827722.584615285 ns/iter 0.96
HTML_Build_Table_100000 70238533.29999384 ns/iter 72279597.80000219 ns/iter 0.97
HTML_Render_Table_100000 9849249.557143074 ns/iter 5204662.880596821 ns/iter 1.89
GZIP_Compress_ISO_Language_Set_3_Locations 30773305.260872208 ns/iter 35971272.6315796 ns/iter 0.86
GZIP_Decompress_ISO_Language_Set_3_Locations 4974144.503704438 ns/iter 4263763.579268143 ns/iter 1.17
GZIP_Compress_ISO_Language_Set_3_Schema 1898769.784945952 ns/iter 2134575.9359759283 ns/iter 0.89
GZIP_Decompress_ISO_Language_Set_3_Schema 347389.5233135463 ns/iter 274405.27686274116 ns/iter 1.27

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: 9c1d437 Previous: eb361a9 Ratio
GZIP_Compress_ISO_Language_Set_3_Locations 36315346.68421098 ns/iter 31594713.363633987 ns/iter 1.15
GZIP_Decompress_ISO_Language_Set_3_Locations 4149838.337278025 ns/iter 4841428.737226221 ns/iter 0.86
GZIP_Compress_ISO_Language_Set_3_Schema 2015701.5780346938 ns/iter 2016469.2289855352 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 381198.5608956752 ns/iter 345965.11861041974 ns/iter 1.10
HTML_Build_Table_100000 60067214.583331935 ns/iter 58779859.16666735 ns/iter 1.02
HTML_Render_Table_100000 1931019.1694444255 ns/iter 3107340.933628313 ns/iter 0.62
JSONL_Parse_Large 13262874.377359506 ns/iter 12525801.517857159 ns/iter 1.06
JSONL_Parse_Large_GZIP 14774564.808510361 ns/iter 13842619.294118598 ns/iter 1.07
URITemplateRouter_Create 31334.25847438804 ns/iter 28273.031196937332 ns/iter 1.11
URITemplateRouter_Match 148.7738833632779 ns/iter 138.09750796142646 ns/iter 1.08
URITemplateRouter_Match_BasePath 170.5388851027793 ns/iter 158.53714234786003 ns/iter 1.08
URITemplateRouterView_Restore 7732.557737661843 ns/iter 3514.903130268841 ns/iter 2.20
URITemplateRouterView_Match 122.0639710397796 ns/iter 120.55369355261537 ns/iter 1.01
URITemplateRouterView_Match_BasePath 142.37274034974976 ns/iter 134.65699284220096 ns/iter 1.06
URITemplateRouterView_Arguments 476.39578514661974 ns/iter 529.4722287404741 ns/iter 0.90
Pointer_Object_Traverse 29.67037470862175 ns/iter 29.895300697258342 ns/iter 0.99
Pointer_Object_Try_Traverse 23.098953021021913 ns/iter 24.511668004854894 ns/iter 0.94
Pointer_Push_Back_Pointer_To_Weak_Pointer 157.57494959254475 ns/iter 155.732578589409 ns/iter 1.01
Pointer_Walker_Schema_ISO_Language 1955608.3042253947 ns/iter 1750316.4734178057 ns/iter 1.12
Pointer_Maybe_Tracked_Deeply_Nested/0 1517094.823144187 ns/iter 1501287.9871521238 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/1 1819457.257142681 ns/iter 1911087.4132232275 ns/iter 0.95
Pointer_Position_Tracker_Get_Deeply_Nested 579.2930230736524 ns/iter 580.9618955969912 ns/iter 1.00
JSON_Array_Of_Objects_Unique 375.9787162099373 ns/iter 315.11744783880084 ns/iter 1.19
JSON_Parse_1 7790.431053842051 ns/iter 6862.0409986373625 ns/iter 1.14
JSON_Parse_Real 6705.78834674793 ns/iter 5904.892277910968 ns/iter 1.14
JSON_Parse_Decimal 11306.85154399922 ns/iter 9141.094923692139 ns/iter 1.24
JSON_Parse_Schema_ISO_Language 5206019.305970117 ns/iter 4842172.475862534 ns/iter 1.08
JSON_Parse_Integer 4781.486500408729 ns/iter 4581.004634562592 ns/iter 1.04
JSON_Parse_String_NonSSO_Plain 8523.688888082454 ns/iter 7588.15606098592 ns/iter 1.12
JSON_Parse_String_SSO_Plain 3951.798557564566 ns/iter 3545.161853899654 ns/iter 1.11
JSON_Parse_String_Escape_Heavy 20395.73348165848 ns/iter 18965.517130826 ns/iter 1.08
JSON_Parse_Object_Short_Keys 11369.4963874929 ns/iter 9787.417406650684 ns/iter 1.16
JSON_Parse_Object_Scalar_Properties 5763.296470046243 ns/iter 5049.61176207811 ns/iter 1.14
JSON_Parse_Object_Array_Properties 8938.17933227753 ns/iter 7770.836372926516 ns/iter 1.15
JSON_Parse_Object_Object_Properties 9442.820742119384 ns/iter 7949.797138477131 ns/iter 1.19
JSON_Parse_Nested_Containers 73086.38917178594 ns/iter 64866.9384643951 ns/iter 1.13
JSON_From_String_Copy 18.434242515977672 ns/iter 16.060034147220613 ns/iter 1.15
JSON_From_String_Temporary 15.452418035908256 ns/iter 13.729080785277755 ns/iter 1.13
JSON_Number_To_Double 21.841415799968917 ns/iter 20.576369963163334 ns/iter 1.06
JSON_Object_At_Last_Key/8 5.924698628757247 ns/iter 6.061404410557249 ns/iter 0.98
JSON_Object_At_Last_Key/32 21.84237388157106 ns/iter 19.93754924196469 ns/iter 1.10
JSON_Object_At_Last_Key/128 87.62223907176629 ns/iter 83.16339080879992 ns/iter 1.05
JSON_Object_At_Last_Key/512 425.31778632648303 ns/iter 304.1297042072754 ns/iter 1.40
JSON_Fast_Hash_Helm_Chart_Lock 62.25778972552816 ns/iter 49.13038650657747 ns/iter 1.27
JSON_Equality_Helm_Chart_Lock 158.8759496577305 ns/iter 135.35925652927156 ns/iter 1.17
JSON_Divisible_By_Decimal 237.06551143976597 ns/iter 255.51954456189245 ns/iter 0.93
JSON_String_Equal/10 5.653799936498259 ns/iter 4.931571295492314 ns/iter 1.15
JSON_String_Equal/100 6.292976931171707 ns/iter 6.087607536127906 ns/iter 1.03
JSON_String_Equal_Small_By_Perfect_Hash/10 0.6244405869796879 ns/iter 0.8250506811559375 ns/iter 0.76
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.225002354836796 ns/iter 17.01529169252047 ns/iter 1.48
JSON_String_Fast_Hash/10 0.9498995372891672 ns/iter 1.1522776115141398 ns/iter 0.82
JSON_String_Fast_Hash/100 0.9355572108354436 ns/iter 1.1523929557566104 ns/iter 0.81
JSON_String_Key_Hash/10 1.2490402252450117 ns/iter 1.4406655074831183 ns/iter 0.87
JSON_String_Key_Hash/100 12.446475238031498 ns/iter 11.819156855730945 ns/iter 1.05
JSON_Object_Defines_Miss_Same_Length 3.429964161027798 ns/iter 3.6550593610331488 ns/iter 0.94
JSON_Object_Defines_Miss_Too_Small 3.4267562707294474 ns/iter 3.3154017126282307 ns/iter 1.03
JSON_Object_Defines_Miss_Too_Large 3.1172813914765167 ns/iter 3.417605814149951 ns/iter 0.91
Regex_Lower_S_Or_Upper_S_Asterisk 0.9339548224581857 ns/iter 1.151825579709687 ns/iter 0.81
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.6259114972731505 ns/iter 0.8642202590155604 ns/iter 0.72
Regex_Period_Asterisk 0.6258097120298309 ns/iter 0.8640552454970213 ns/iter 0.72
Regex_Group_Period_Asterisk_Group 0.9344711359344888 ns/iter 1.152512296051464 ns/iter 0.81
Regex_Period_Plus 0.9348088963216257 ns/iter 1.153271701262283 ns/iter 0.81
Regex_Period 0.6234039999465755 ns/iter 0.8643182386076022 ns/iter 0.72
Regex_Caret_Period_Plus_Dollar 0.6231587076424894 ns/iter 0.8641019914394725 ns/iter 0.72
Regex_Caret_Group_Period_Plus_Group_Dollar 0.9336908285526726 ns/iter 1.1516343525837296 ns/iter 0.81
Regex_Caret_Period_Asterisk_Dollar 0.9347982555866036 ns/iter 1.1518534596937346 ns/iter 0.81
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.6239386035395725 ns/iter 0.864601480130705 ns/iter 0.72
Regex_Caret_X_Hyphen 4.051984063314437 ns/iter 3.1673756749340463 ns/iter 1.28
Regex_Period_Md_Dollar 32.67071699764446 ns/iter 24.423651323093058 ns/iter 1.34
Regex_Caret_Slash_Period_Asterisk 4.3542345860187 ns/iter 3.1678507509503193 ns/iter 1.37
Regex_Caret_Period_Range_Dollar 0.7795938094042342 ns/iter 0.8648340659040099 ns/iter 0.90
Regex_Nested_Backtrack 39.69338241510658 ns/iter 33.65493269209927 ns/iter 1.18

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