Skip to content

Misc text module utilities#2538

Merged
jviotti merged 2 commits into
mainfrom
text-util
Jun 24, 2026
Merged

Misc text module utilities#2538
jviotti merged 2 commits into
mainfrom
text-util

Conversation

@jviotti

@jviotti jviotti commented Jun 24, 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.

1 issue found across 13 files

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

Re-trigger cubic

Comment thread config.cmake.in
@augmentcode

augmentcode Bot commented Jun 24, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR centralizes a few common ASCII character-classification checks into the text module.

Changes:

  • Added is_alpha, is_digit, and is_alphanum helpers to sourcemeta/core/text.h
  • Replaced ad-hoc letter/digit checks in DNS hostname validation, email parsing helpers, and SemVer parsing with the new utilities
  • Updated URI grammar helpers to use is_alphanum instead of std::isalnum
  • Wired the text component into the relevant CMake targets/config includes
  • Added new unit tests covering the new character helpers

Technical Notes: The new helpers are constexpr, ASCII-focused, and reduce duplicated RFC-oriented character checks across modules.

🤖 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 (macos/llvm)

Details
Benchmark suite Current: f7c1988 Previous: af38cb0 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.693088184633751 ns/iter 1.7763704361257497 ns/iter 0.95
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.6354148947679272 ns/iter 1.7267711285306282 ns/iter 0.95
Regex_Period_Asterisk 1.6858774645025651 ns/iter 1.7694417688098183 ns/iter 0.95
Regex_Group_Period_Asterisk_Group 1.6852263385600978 ns/iter 1.6463612463764536 ns/iter 1.02
Regex_Period_Plus 2.0183767143395075 ns/iter 1.9872267020575283 ns/iter 1.02
Regex_Period 2.0332946546588038 ns/iter 1.996827287645944 ns/iter 1.02
Regex_Caret_Period_Plus_Dollar 2.043495991689201 ns/iter 1.9952589079150547 ns/iter 1.02
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0386287845833424 ns/iter 1.9742712755109215 ns/iter 1.03
Regex_Caret_Period_Asterisk_Dollar 1.693145825169389 ns/iter 1.662630231693978 ns/iter 1.02
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.6934108165053086 ns/iter 1.6488767225385446 ns/iter 1.03
Regex_Caret_X_Hyphen 6.2307835885428045 ns/iter 5.971304462678048 ns/iter 1.04
Regex_Period_Md_Dollar 17.268723866966027 ns/iter 16.47330045505424 ns/iter 1.05
Regex_Caret_Slash_Period_Asterisk 4.506656321623248 ns/iter 4.704668400233773 ns/iter 0.96
Regex_Caret_Period_Range_Dollar 2.023981186495362 ns/iter 2.034303326117181 ns/iter 0.99
Regex_Nested_Backtrack 24.855756093164743 ns/iter 27.47250844436326 ns/iter 0.90
JSON_Array_Of_Objects_Unique 338.4284972278064 ns/iter 339.1895922094033 ns/iter 1.00
JSON_Parse_1 3630.758032716769 ns/iter 3525.1137751864776 ns/iter 1.03
JSON_Parse_Real 5360.712482560167 ns/iter 5042.960668182094 ns/iter 1.06
JSON_Parse_Decimal 5636.565280647663 ns/iter 5424.041067333435 ns/iter 1.04
JSON_Parse_Schema_ISO_Language 3012042.393012612 ns/iter 2795639.688524734 ns/iter 1.08
JSON_Parse_Integer 3026.8841941409564 ns/iter 2902.621304151707 ns/iter 1.04
JSON_Parse_String_NonSSO_Plain 3620.9841393723905 ns/iter 3418.875028569301 ns/iter 1.06
JSON_Parse_String_SSO_Plain 1796.6497948198873 ns/iter 1763.900608115255 ns/iter 1.02
JSON_Parse_String_Escape_Heavy 16474.415587135798 ns/iter 15840.850027082399 ns/iter 1.04
JSON_Parse_Object_Short_Keys 5180.782603845727 ns/iter 5005.544530868818 ns/iter 1.04
JSON_Parse_Object_Scalar_Properties 2705.8814239053186 ns/iter 2661.306339378793 ns/iter 1.02
JSON_Parse_Object_Array_Properties 3507.912632296518 ns/iter 3210.8071725454856 ns/iter 1.09
JSON_Parse_Object_Object_Properties 3508.827305112717 ns/iter 3249.84104692419 ns/iter 1.08
JSON_Parse_Nested_Containers 28155.84376037897 ns/iter 26863.4072066584 ns/iter 1.05
JSON_From_String_Copy 24.921731855836455 ns/iter 25.871775056842885 ns/iter 0.96
JSON_From_String_Temporary 19.6826478311942 ns/iter 19.846780358528363 ns/iter 0.99
JSON_Number_To_Double 33.380359089618246 ns/iter 32.04561509246918 ns/iter 1.04
JSON_Object_At_Last_Key/8 3.9346728283719057 ns/iter 3.596015622088005 ns/iter 1.09
JSON_Object_At_Last_Key/32 12.55358575361641 ns/iter 12.489573381967679 ns/iter 1.01
JSON_Object_At_Last_Key/128 54.08383327492047 ns/iter 53.14773784020714 ns/iter 1.02
JSON_Object_At_Last_Key/512 185.82636744047392 ns/iter 184.3024702129436 ns/iter 1.01
JSON_Fast_Hash_Helm_Chart_Lock 63.11276333576483 ns/iter 57.83284077762045 ns/iter 1.09
JSON_Equality_Helm_Chart_Lock 135.13817967641086 ns/iter 124.66750345473572 ns/iter 1.08
JSON_Divisible_By_Decimal 176.5116037983596 ns/iter 162.70833287963367 ns/iter 1.08
JSON_String_Equal/10 6.645249508024577 ns/iter 6.270276812692782 ns/iter 1.06
JSON_String_Equal/100 6.167044540965554 ns/iter 5.972826996794614 ns/iter 1.03
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7005818078181432 ns/iter 0.7085660115349259 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.070310354622941 ns/iter 3.0667971793145945 ns/iter 1.00
JSON_String_Fast_Hash/10 2.2019495185758498 ns/iter 2.201961723668987 ns/iter 1.00
JSON_String_Fast_Hash/100 1.9475320348222736 ns/iter 1.885611253996816 ns/iter 1.03
JSON_String_Key_Hash/10 1.3172756333195714 ns/iter 1.295918413899959 ns/iter 1.02
JSON_String_Key_Hash/100 2.00968908463681 ns/iter 2.0095958788167656 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 2.196023891276198 ns/iter 2.248905993916449 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Small 2.4419056855099317 ns/iter 2.192150194930028 ns/iter 1.11
JSON_Object_Defines_Miss_Too_Large 2.211799079705554 ns/iter 2.2004928254301057 ns/iter 1.01
Pointer_Object_Traverse 12.906039263102812 ns/iter 12.865061251450078 ns/iter 1.00
Pointer_Object_Try_Traverse 21.466510175148183 ns/iter 21.502504439362767 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 143.69137647512568 ns/iter 186.24788660269098 ns/iter 0.77
Pointer_Walker_Schema_ISO_Language 1995981.1488092784 ns/iter 2823467.6764707076 ns/iter 0.71
Pointer_Maybe_Tracked_Deeply_Nested/0 810145.5785957134 ns/iter 993120.3427720158 ns/iter 0.82
Pointer_Maybe_Tracked_Deeply_Nested/1 1110938.9486404837 ns/iter 1307348.2422018428 ns/iter 0.85
Pointer_Position_Tracker_Get_Deeply_Nested 388.95087447455313 ns/iter 384.31354532765914 ns/iter 1.01
URITemplateRouter_Create 22586.27286300509 ns/iter 23743.400123066058 ns/iter 0.95
URITemplateRouter_Match 151.85361386499127 ns/iter 163.3175573218672 ns/iter 0.93
URITemplateRouter_Match_BasePath 177.92946818211138 ns/iter 193.12190836269258 ns/iter 0.92
URITemplateRouterView_Restore 9270.52095113308 ns/iter 9082.192513840713 ns/iter 1.02
URITemplateRouterView_Match 120.9882848751485 ns/iter 127.17572012124926 ns/iter 0.95
URITemplateRouterView_Match_BasePath 138.63562418970335 ns/iter 151.50980618475398 ns/iter 0.92
URITemplateRouterView_Arguments 374.9445455322487 ns/iter 403.6722094040141 ns/iter 0.93
JSONL_Parse_Large 11531370.833336042 ns/iter 12155499.316668283 ns/iter 0.95
JSONL_Parse_Large_GZIP 12344427.821428131 ns/iter 13147441.526315194 ns/iter 0.94
HTML_Build_Table_100000 61489295.08333367 ns/iter 73758358.2999946 ns/iter 0.83
HTML_Render_Table_100000 2810135.0206198697 ns/iter 3671530.0829874347 ns/iter 0.77
GZIP_Compress_ISO_Language_Set_3_Locations 24835708.30767908 ns/iter 27362505.000000965 ns/iter 0.91
GZIP_Decompress_ISO_Language_Set_3_Locations 4689127.773332681 ns/iter 5344706.659999474 ns/iter 0.88
GZIP_Compress_ISO_Language_Set_3_Schema 1398081.6831679135 ns/iter 2035565.810747761 ns/iter 0.69
GZIP_Decompress_ISO_Language_Set_3_Schema 252594.30281953543 ns/iter 347581.6533604628 ns/iter 0.73
JOSE_VerifySignature_RS256 20187.409770735878 ns/iter 21944.20357788843 ns/iter 0.92
JOSE_VerifySignature_ES512 904680.2868218599 ns/iter 972350.7885861717 ns/iter 0.93

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: f7c1988 Previous: af38cb0 Ratio
JOSE_VerifySignature_RS256 24879.277507610106 ns/iter 24740.72597057509 ns/iter 1.01
JOSE_VerifySignature_ES512 641424.6731123448 ns/iter 642743.9871558901 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 39348075.05555682 ns/iter 39458964.722219504 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4122208.3529412565 ns/iter 4040955.751444842 ns/iter 1.02
GZIP_Compress_ISO_Language_Set_3_Schema 2284306.9869282604 ns/iter 2282442.938110863 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 279852.1199030793 ns/iter 276761.37114623614 ns/iter 1.01
HTML_Build_Table_100000 71500684.20000935 ns/iter 69741156.49999249 ns/iter 1.03
HTML_Render_Table_100000 2062427.8328444147 ns/iter 2011154.36311247 ns/iter 1.03
JSONL_Parse_Large 12347973.245614173 ns/iter 12204151.14035109 ns/iter 1.01
JSONL_Parse_Large_GZIP 13876474.63999883 ns/iter 13799056.27451018 ns/iter 1.01
URITemplateRouter_Create 29705.00502706743 ns/iter 29782.668251677205 ns/iter 1.00
URITemplateRouter_Match 152.71491247217324 ns/iter 153.11571386816013 ns/iter 1.00
URITemplateRouter_Match_BasePath 180.58298180296688 ns/iter 181.26870139202637 ns/iter 1.00
URITemplateRouterView_Restore 8522.945136505916 ns/iter 8602.582427981162 ns/iter 0.99
URITemplateRouterView_Match 126.12526205090607 ns/iter 126.01322206759127 ns/iter 1.00
URITemplateRouterView_Match_BasePath 142.31859079595233 ns/iter 142.5858401695978 ns/iter 1.00
URITemplateRouterView_Arguments 451.17394441766356 ns/iter 452.91771744966525 ns/iter 1.00
Pointer_Object_Traverse 29.61743858344471 ns/iter 29.604313238034987 ns/iter 1.00
Pointer_Object_Try_Traverse 24.977436443105436 ns/iter 24.97067965112231 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 166.6803851961805 ns/iter 167.91903109449308 ns/iter 0.99
Pointer_Walker_Schema_ISO_Language 1914890.414169022 ns/iter 1863932.2192513724 ns/iter 1.03
Pointer_Maybe_Tracked_Deeply_Nested/0 1533764.6541849452 ns/iter 1537126.4489795272 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/1 1662796.6199523616 ns/iter 1670370.2945367137 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 596.2788829173018 ns/iter 422.749852544838 ns/iter 1.41
JSON_Array_Of_Objects_Unique 405.46144864720833 ns/iter 406.1422059254524 ns/iter 1.00
JSON_Parse_1 7474.191192609597 ns/iter 7407.630518961682 ns/iter 1.01
JSON_Parse_Real 6597.636947018773 ns/iter 6547.131328110639 ns/iter 1.01
JSON_Parse_Decimal 9678.3851574938 ns/iter 9566.927133583908 ns/iter 1.01
JSON_Parse_Schema_ISO_Language 5106123.659420452 ns/iter 5041415.402877437 ns/iter 1.01
JSON_Parse_Integer 4875.977380455146 ns/iter 4823.447785399584 ns/iter 1.01
JSON_Parse_String_NonSSO_Plain 8598.370604962029 ns/iter 8633.281829616317 ns/iter 1.00
JSON_Parse_String_SSO_Plain 3833.940536748882 ns/iter 3682.263593368196 ns/iter 1.04
JSON_Parse_String_Escape_Heavy 19947.01294869338 ns/iter 19670.632458903627 ns/iter 1.01
JSON_Parse_Object_Short_Keys 11382.499886234385 ns/iter 11263.135676041346 ns/iter 1.01
JSON_Parse_Object_Scalar_Properties 5747.766525132741 ns/iter 5791.0467434151415 ns/iter 0.99
JSON_Parse_Object_Array_Properties 9157.647130328542 ns/iter 9300.376098325889 ns/iter 0.98
JSON_Parse_Object_Object_Properties 9559.12135445663 ns/iter 9317.19090727484 ns/iter 1.03
JSON_Parse_Nested_Containers 72206.55890298118 ns/iter 71682.92794086946 ns/iter 1.01
JSON_From_String_Copy 19.713315580600216 ns/iter 20.06221738450726 ns/iter 0.98
JSON_From_String_Temporary 16.27254429612618 ns/iter 16.638393368666897 ns/iter 0.98
JSON_Number_To_Double 19.380398790780923 ns/iter 19.398160353510043 ns/iter 1.00
JSON_Object_At_Last_Key/8 9.21196492258098 ns/iter 9.154647436679758 ns/iter 1.01
JSON_Object_At_Last_Key/32 35.67624126026627 ns/iter 34.505750178185615 ns/iter 1.03
JSON_Object_At_Last_Key/128 135.79621709273832 ns/iter 135.87195090238586 ns/iter 1.00
JSON_Object_At_Last_Key/512 558.9581004225328 ns/iter 559.005723415601 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 55.039202643504865 ns/iter 54.49931767200868 ns/iter 1.01
JSON_Equality_Helm_Chart_Lock 159.4056536686233 ns/iter 158.6630738219131 ns/iter 1.00
JSON_Divisible_By_Decimal 233.47172237784474 ns/iter 231.82066635872465 ns/iter 1.01
JSON_String_Equal/10 6.072872174850467 ns/iter 6.794522495802527 ns/iter 0.89
JSON_String_Equal/100 6.776386714557648 ns/iter 6.778834698953305 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7124335415585996 ns/iter 0.7140417498107735 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 21.93698575696943 ns/iter 21.938711501311868 ns/iter 1.00
JSON_String_Fast_Hash/10 1.4077138708929877 ns/iter 1.4078148236700916 ns/iter 1.00
JSON_String_Fast_Hash/100 1.4079595612628424 ns/iter 1.4075339099853694 ns/iter 1.00
JSON_String_Key_Hash/10 1.0867982535567005 ns/iter 1.0893436798319565 ns/iter 1.00
JSON_String_Key_Hash/100 15.288758975542184 ns/iter 14.763621194950764 ns/iter 1.04
JSON_Object_Defines_Miss_Same_Length 3.5182031305031347 ns/iter 3.519139849531528 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.5160056066957694 ns/iter 3.5181473212932435 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.8693683669364756 ns/iter 3.8719049364939924 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.7038586766410238 ns/iter 0.7060370013064149 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.0553196413122348 ns/iter 1.0562125528443882 ns/iter 1.00
Regex_Period_Asterisk 1.0555130958841699 ns/iter 1.0562504308811422 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.7044354374548619 ns/iter 0.7039920750985573 ns/iter 1.00
Regex_Period_Plus 0.7058769507820467 ns/iter 0.7047698050446635 ns/iter 1.00
Regex_Period 1.0557758145293352 ns/iter 1.0579770660072063 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 1.055655911272324 ns/iter 1.0563234098574616 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.7044939487419444 ns/iter 0.704299233392722 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.7037332923252735 ns/iter 0.7041406351489582 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.0555168921330589 ns/iter 1.0561849796289775 ns/iter 1.00
Regex_Caret_X_Hyphen 3.8680838211465702 ns/iter 3.87125281062893 ns/iter 1.00
Regex_Period_Md_Dollar 32.533128722647724 ns/iter 33.7836621868042 ns/iter 0.96
Regex_Caret_Slash_Period_Asterisk 4.21940668153223 ns/iter 4.223640382144998 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.4082716324694655 ns/iter 1.4074368738473058 ns/iter 1.00
Regex_Nested_Backtrack 39.288133859535726 ns/iter 38.8195811463989 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/llvm)

Details
Benchmark suite Current: f7c1988 Previous: af38cb0 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.480903387830921 ns/iter 2.197502648325486 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.461671653953877 ns/iter 2.1881385958358783 ns/iter 1.13
Regex_Period_Asterisk 2.4694651055282217 ns/iter 2.2127298016128987 ns/iter 1.12
Regex_Group_Period_Asterisk_Group 2.5139776819186146 ns/iter 2.191676851426093 ns/iter 1.15
Regex_Period_Plus 3.5176859792600133 ns/iter 2.23626165138012 ns/iter 1.57
Regex_Period 3.515043774519789 ns/iter 2.228072870222253 ns/iter 1.58
Regex_Caret_Period_Plus_Dollar 3.866553376237259 ns/iter 2.490461964274203 ns/iter 1.55
Regex_Caret_Group_Period_Plus_Group_Dollar 3.877900893533532 ns/iter 2.4901509176072727 ns/iter 1.56
Regex_Caret_Period_Asterisk_Dollar 2.463050761567048 ns/iter 2.1922256578425086 ns/iter 1.12
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.461318607703665 ns/iter 2.185839256147704 ns/iter 1.13
Regex_Caret_X_Hyphen 7.267311273638022 ns/iter 5.9231336844639495 ns/iter 1.23
Regex_Period_Md_Dollar 26.669411176148937 ns/iter 33.57914088600429 ns/iter 0.79
Regex_Caret_Slash_Period_Asterisk 7.358232975698368 ns/iter 5.915232410837953 ns/iter 1.24
Regex_Caret_Period_Range_Dollar 3.8664307815165433 ns/iter 3.7343155668696233 ns/iter 1.04
Regex_Nested_Backtrack 37.03796813508905 ns/iter 54.77455879524754 ns/iter 0.68
JSON_Array_Of_Objects_Unique 420.1648667426086 ns/iter 403.7736991781672 ns/iter 1.04
JSON_Parse_1 4644.078353800226 ns/iter 4947.470893037218 ns/iter 0.94
JSON_Parse_Real 5242.384245187589 ns/iter 5301.136839929793 ns/iter 0.99
JSON_Parse_Decimal 7586.6835399036745 ns/iter 8203.560480515514 ns/iter 0.92
JSON_Parse_Schema_ISO_Language 3549938.8615381834 ns/iter 3549754.324999981 ns/iter 1.00
JSON_Parse_Integer 4089.234056538083 ns/iter 3717.5701672688106 ns/iter 1.10
JSON_Parse_String_NonSSO_Plain 5135.142593393479 ns/iter 4999.555981893285 ns/iter 1.03
JSON_Parse_String_SSO_Plain 2764.9546666141255 ns/iter 2766.019231984786 ns/iter 1.00
JSON_Parse_String_Escape_Heavy 14304.580488600965 ns/iter 14537.817643093247 ns/iter 0.98
JSON_Parse_Object_Short_Keys 8080.354674842895 ns/iter 8309.400504762752 ns/iter 0.97
JSON_Parse_Object_Scalar_Properties 4121.386228214715 ns/iter 4297.636081394434 ns/iter 0.96
JSON_Parse_Object_Array_Properties 5666.545323300329 ns/iter 5950.7746188326755 ns/iter 0.95
JSON_Parse_Object_Object_Properties 5573.091012956745 ns/iter 5931.902781663764 ns/iter 0.94
JSON_Parse_Nested_Containers 44648.37745440661 ns/iter 45278.580992966956 ns/iter 0.99
JSON_From_String_Copy 21.101348315051947 ns/iter 19.64091407002738 ns/iter 1.07
JSON_From_String_Temporary 18.291081483358376 ns/iter 17.42580216740019 ns/iter 1.05
JSON_Number_To_Double 22.549306321100868 ns/iter 23.706291602676952 ns/iter 0.95
JSON_Object_At_Last_Key/8 4.731349310141331 ns/iter 3.4852463105053224 ns/iter 1.36
JSON_Object_At_Last_Key/32 13.633657441328639 ns/iter 11.856601055281079 ns/iter 1.15
JSON_Object_At_Last_Key/128 47.28956216749302 ns/iter 48.934023762690494 ns/iter 0.97
JSON_Object_At_Last_Key/512 368.46587187711884 ns/iter 385.9599085293739 ns/iter 0.95
JSON_Fast_Hash_Helm_Chart_Lock 65.11839732304205 ns/iter 56.89103351317706 ns/iter 1.14
JSON_Equality_Helm_Chart_Lock 175.92315664983457 ns/iter 165.49330239614187 ns/iter 1.06
JSON_Divisible_By_Decimal 254.9036819124021 ns/iter 247.71796600392696 ns/iter 1.03
JSON_String_Equal/10 6.71394630936144 ns/iter 6.95164612546712 ns/iter 0.97
JSON_String_Equal/100 7.389327955750936 ns/iter 7.477420725316046 ns/iter 0.99
JSON_String_Equal_Small_By_Perfect_Hash/10 1.054581531506471 ns/iter 0.9367508079170248 ns/iter 1.13
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 12.413908105530954 ns/iter 10.587340729749931 ns/iter 1.17
JSON_String_Fast_Hash/10 2.1107132422120563 ns/iter 2.1797568638653253 ns/iter 0.97
JSON_String_Fast_Hash/100 2.113170983741857 ns/iter 2.1817966603101535 ns/iter 0.97
JSON_String_Key_Hash/10 2.4646079997726122 ns/iter 2.1811129926122743 ns/iter 1.13
JSON_String_Key_Hash/100 7.8094336313899975 ns/iter 8.048969776680043 ns/iter 0.97
JSON_Object_Defines_Miss_Same_Length 2.926065721226974 ns/iter 2.7648993023507575 ns/iter 1.06
JSON_Object_Defines_Miss_Too_Small 2.915397263233137 ns/iter 2.6134206861141496 ns/iter 1.12
JSON_Object_Defines_Miss_Too_Large 2.92414198137121 ns/iter 2.649103334369561 ns/iter 1.10
Pointer_Object_Traverse 25.530616746636483 ns/iter 24.506486526331912 ns/iter 1.04
Pointer_Object_Try_Traverse 30.613989706176707 ns/iter 28.725897137189254 ns/iter 1.07
Pointer_Push_Back_Pointer_To_Weak_Pointer 185.94138611642856 ns/iter 207.0548832507687 ns/iter 0.90
Pointer_Walker_Schema_ISO_Language 1750513.8850000892 ns/iter 1672657.8333334818 ns/iter 1.05
Pointer_Maybe_Tracked_Deeply_Nested/0 1287179.4642201124 ns/iter 1248879.7243816233 ns/iter 1.03
Pointer_Maybe_Tracked_Deeply_Nested/1 1650717.1431870563 ns/iter 1767497.0982365937 ns/iter 0.93
Pointer_Position_Tracker_Get_Deeply_Nested 764.4524842966825 ns/iter 697.0169323590957 ns/iter 1.10
URITemplateRouter_Create 29700.048967100305 ns/iter 32341.111121326303 ns/iter 0.92
URITemplateRouter_Match 176.83786079797073 ns/iter 176.22882268863955 ns/iter 1.00
URITemplateRouter_Match_BasePath 210.44765276641814 ns/iter 209.3089781017587 ns/iter 1.01
URITemplateRouterView_Restore 8701.672628457336 ns/iter 7962.393250069321 ns/iter 1.09
URITemplateRouterView_Match 172.49328292877232 ns/iter 164.3873207965839 ns/iter 1.05
URITemplateRouterView_Match_BasePath 196.92926472107916 ns/iter 188.83051079023616 ns/iter 1.04
URITemplateRouterView_Arguments 459.2453197792771 ns/iter 440.3382053899116 ns/iter 1.04
JSONL_Parse_Large 9088187.849315172 ns/iter 10568789.530302845 ns/iter 0.86
JSONL_Parse_Large_GZIP 10763868.723076414 ns/iter 12194158.561402345 ns/iter 0.88
HTML_Build_Table_100000 71729612.50000754 ns/iter 72996163.90000665 ns/iter 0.98
HTML_Render_Table_100000 4945470.391304014 ns/iter 5413422.462121768 ns/iter 0.91
GZIP_Compress_ISO_Language_Set_3_Locations 35443846.19999619 ns/iter 32634570.380954154 ns/iter 1.09
GZIP_Decompress_ISO_Language_Set_3_Locations 4257369.231707777 ns/iter 4091566.0760238525 ns/iter 1.04
GZIP_Compress_ISO_Language_Set_3_Schema 2125121.617021217 ns/iter 1866126.5641711794 ns/iter 1.14
GZIP_Decompress_ISO_Language_Set_3_Schema 278771.1215469653 ns/iter 357281.36855536286 ns/iter 0.78
JOSE_VerifySignature_RS256 63803.18504435627 ns/iter 57971.64649470756 ns/iter 1.10
JOSE_VerifySignature_ES512 2656297.3840302615 ns/iter 2448227.4705879497 ns/iter 1.08

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: f7c1988 Previous: af38cb0 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 3.865889457381659 ns/iter 3.872538504464197 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 3.838411272321096 ns/iter 3.8409665178568932 ns/iter 1.00
Regex_Period_Asterisk 3.840426421713974 ns/iter 3.8473210645584506 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 3.8379294574325056 ns/iter 3.85218535026395 ns/iter 1.00
Regex_Period_Plus 3.5633134988969353 ns/iter 3.5711047488844683 ns/iter 1.00
Regex_Period 3.567868654343888 ns/iter 3.5700738560288534 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 3.565184302464686 ns/iter 3.581749436368276 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 3.56567869978532 ns/iter 3.568939771208967 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 3.838139508928354 ns/iter 3.84103177885544 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.8396924931426635 ns/iter 3.8462860645602324 ns/iter 1.00
Regex_Caret_X_Hyphen 6.035384821428482 ns/iter 6.03770267857178 ns/iter 1.00
Regex_Period_Md_Dollar 53.01141817179807 ns/iter 46.595251040072384 ns/iter 1.14
Regex_Caret_Slash_Period_Asterisk 5.875802999998997 ns/iter 5.766965999999912 ns/iter 1.02
Regex_Caret_Period_Range_Dollar 4.404828114184664 ns/iter 4.1165935695908304 ns/iter 1.07
Regex_Nested_Backtrack 53.65871999999854 ns/iter 52.110670000001846 ns/iter 1.03
JSON_Array_Of_Objects_Unique 442.83689285395695 ns/iter 402.7592437347098 ns/iter 1.10
JSON_Parse_1 7727.939732143443 ns/iter 7285.875000000124 ns/iter 1.06
JSON_Parse_Real 13101.739285713977 ns/iter 12717.782956327173 ns/iter 1.03
JSON_Parse_Decimal 9527.933357440574 ns/iter 8689.300223214044 ns/iter 1.10
JSON_Parse_Schema_ISO_Language 7395806.666666734 ns/iter 6212367.85714225 ns/iter 1.19
JSON_Parse_Integer 4956.338392856554 ns/iter 4637.887138140302 ns/iter 1.07
JSON_Parse_String_NonSSO_Plain 6021.710714285129 ns/iter 6442.597098213249 ns/iter 0.93
JSON_Parse_String_SSO_Plain 2917.6919642850407 ns/iter 2733.9184681759507 ns/iter 1.07
JSON_Parse_String_Escape_Heavy 17270.770089286965 ns/iter 16869.902030591893 ns/iter 1.02
JSON_Parse_Object_Short_Keys 10396.46296221806 ns/iter 10273.537499999818 ns/iter 1.01
JSON_Parse_Object_Scalar_Properties 5310.528571430138 ns/iter 5251.585714285666 ns/iter 1.01
JSON_Parse_Object_Array_Properties 8898.694202257635 ns/iter 8905.702653113492 ns/iter 1.00
JSON_Parse_Object_Object_Properties 9035.616071429838 ns/iter 9024.257034565797 ns/iter 1.00
JSON_Parse_Nested_Containers 63389.40178571713 ns/iter 64320.60267857714 ns/iter 0.99
JSON_From_String_Copy 48.86194364600967 ns/iter 48.489293202082806 ns/iter 1.01
JSON_From_String_Temporary 62.90600892857665 ns/iter 62.43810714286114 ns/iter 1.01
JSON_Number_To_Double 104.5905781250056 ns/iter 105.38733011664314 ns/iter 0.99
JSON_Object_At_Last_Key/8 5.91730803571368 ns/iter 6.308768749999923 ns/iter 0.94
JSON_Object_At_Last_Key/32 21.03865197355903 ns/iter 19.30228708887004 ns/iter 1.09
JSON_Object_At_Last_Key/128 80.5618660714101 ns/iter 72.18206473214346 ns/iter 1.12
JSON_Object_At_Last_Key/512 331.37742677778215 ns/iter 339.58285453877323 ns/iter 0.98
JSON_Fast_Hash_Helm_Chart_Lock 52.386821428577996 ns/iter 53.526609999994434 ns/iter 0.98
JSON_Equality_Helm_Chart_Lock 220.6422500000116 ns/iter 243.62543750001464 ns/iter 0.91
JSON_Divisible_By_Decimal 279.3654116355214 ns/iter 305.3213702981484 ns/iter 0.91
JSON_String_Equal/10 11.014804687501822 ns/iter 11.232076562500026 ns/iter 0.98
JSON_String_Equal/100 12.832834764138562 ns/iter 13.17646071428718 ns/iter 0.97
JSON_String_Equal_Small_By_Perfect_Hash/10 1.64541413056607 ns/iter 1.7135133928571278 ns/iter 0.96
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 11.907745535718764 ns/iter 13.281283928571545 ns/iter 0.90
JSON_String_Fast_Hash/10 3.8620665564652494 ns/iter 3.5863702614528856 ns/iter 1.08
JSON_String_Fast_Hash/100 3.6188405292511088 ns/iter 3.5692446364832704 ns/iter 1.01
JSON_String_Key_Hash/10 3.930010602679295 ns/iter 3.8428944574236503 ns/iter 1.02
JSON_String_Key_Hash/100 8.620098175800356 ns/iter 8.482015624999205 ns/iter 1.02
JSON_Object_Defines_Miss_Same_Length 3.2457337550720267 ns/iter 3.100349012320647 ns/iter 1.05
JSON_Object_Defines_Miss_Too_Small 4.099234141721763 ns/iter 4.032094516128773 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Large 3.4260923491033117 ns/iter 3.2966625051512373 ns/iter 1.04
Pointer_Object_Traverse 55.86452678571163 ns/iter 52.97482142857745 ns/iter 1.05
Pointer_Object_Try_Traverse 55.2582142857107 ns/iter 52.94655000000148 ns/iter 1.04
Pointer_Push_Back_Pointer_To_Weak_Pointer 143.82135965084709 ns/iter 123.19910714286462 ns/iter 1.17
Pointer_Walker_Schema_ISO_Language 7819562.222223592 ns/iter 5820558.928571172 ns/iter 1.34
Pointer_Maybe_Tracked_Deeply_Nested/0 1936611.5942026172 ns/iter 1858166.756032208 ns/iter 1.04
Pointer_Maybe_Tracked_Deeply_Nested/1 3037987.2881359025 ns/iter 2864016.4658635836 ns/iter 1.06
Pointer_Position_Tracker_Get_Deeply_Nested 412.4760841836437 ns/iter 417.87948826779126 ns/iter 0.99
URITemplateRouter_Create 30002.951779127332 ns/iter 31182.098214291695 ns/iter 0.96
URITemplateRouter_Match 170.61573240734253 ns/iter 170.7468975946286 ns/iter 1.00
URITemplateRouter_Match_BasePath 192.30002403793455 ns/iter 191.96658856839903 ns/iter 1.00
URITemplateRouterView_Restore 18772.498861596323 ns/iter 19370.286341844057 ns/iter 0.97
URITemplateRouterView_Match 133.7443132256897 ns/iter 133.67674999999835 ns/iter 1.00
URITemplateRouterView_Match_BasePath 152.14741071426982 ns/iter 152.2768190948244 ns/iter 1.00
URITemplateRouterView_Arguments 460.1085039888163 ns/iter 455.34331330089753 ns/iter 1.01
JSONL_Parse_Large 25455657.14285658 ns/iter 25758739.285712246 ns/iter 0.99
JSONL_Parse_Large_GZIP 25829392.307689257 ns/iter 25832571.428574216 ns/iter 1.00
HTML_Build_Table_100000 74021327.27274461 ns/iter 72651445.4545395 ns/iter 1.02
HTML_Render_Table_100000 7204904.444443451 ns/iter 6717031.111111282 ns/iter 1.07
GZIP_Compress_ISO_Language_Set_3_Locations 28348171.999996338 ns/iter 28577276.00000544 ns/iter 0.99
GZIP_Decompress_ISO_Language_Set_3_Locations 7753862.222221465 ns/iter 7314595.555557288 ns/iter 1.06
GZIP_Compress_ISO_Language_Set_3_Schema 1719755.2825554288 ns/iter 1718950.8599508584 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 429656.4374999434 ns/iter 426497.04004650674 ns/iter 1.01
JOSE_VerifySignature_RS256 18388.645434331906 ns/iter 18654.415989388683 ns/iter 0.99
JOSE_VerifySignature_ES512 1221875.1562500075 ns/iter 1182538.2142855492 ns/iter 1.03

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

@jviotti jviotti merged commit a39f279 into main Jun 24, 2026
12 checks passed
@jviotti jviotti deleted the text-util branch June 24, 2026 00:48
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