Skip to content

Add some more text related misc utilities - #2736

Merged
jviotti merged 2 commits into
mainfrom
text-utils-2
Aug 16, 2026
Merged

Add some more text related misc utilities#2736
jviotti merged 2 commits into
mainfrom
text-utils-2

Conversation

@jviotti

@jviotti jviotti commented Aug 16, 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 Aug 16, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: This PR adds two general-purpose text utilities to the core text module.

Changes:

  • Introduces replace for non-recursive, left-to-right replacement of all string-view matches.
  • Defines empty targets as matching nothing, avoiding ambiguous insertion behavior.
  • Introduces templated join to concatenate string-like range elements with a separator.
  • Adds documentation and usage examples for both public APIs.
  • Adds focused tests for empty inputs, separators, boundaries, multi-character matches, and overlaps.
  • Registers the new test sources with the text test target.
Technical Notes: replace builds a new result and advances past each match, so replacement text is not reprocessed.

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

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

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

Details
Benchmark suite Current: 6eba6aa Previous: 3e1d118 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2249760865204067 ns/iter 2.0943796831822947 ns/iter 1.06
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.1956092545500643 ns/iter 2.1506233254065417 ns/iter 1.02
Regex_Period_Asterisk 2.1960481150318416 ns/iter 2.1214273287737693 ns/iter 1.04
Regex_Group_Period_Asterisk_Group 2.1945861677439527 ns/iter 2.0973794152843 ns/iter 1.05
Regex_Period_Plus 2.4915351113076714 ns/iter 2.079886787199638 ns/iter 1.20
Regex_Period 2.498355952527877 ns/iter 2.0980421718820783 ns/iter 1.19
Regex_Caret_Period_Plus_Dollar 2.499919564245997 ns/iter 2.078929371440862 ns/iter 1.20
Regex_Caret_Group_Period_Plus_Group_Dollar 2.4903988102619916 ns/iter 2.068902280065019 ns/iter 1.20
Regex_Caret_Period_Asterisk_Dollar 2.2317574889627045 ns/iter 2.1428149690009 ns/iter 1.04
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.193441291824907 ns/iter 2.121360686008557 ns/iter 1.03
Regex_Caret_X_Hyphen 5.330274606678113 ns/iter 4.048235373277673 ns/iter 1.32
Regex_Period_Md_Dollar 27.619535738298264 ns/iter 24.710893702540524 ns/iter 1.12
Regex_Caret_Slash_Period_Asterisk 6.011744774798851 ns/iter 3.747774884146645 ns/iter 1.60
Regex_Caret_Period_Range_Dollar 3.1120303543542613 ns/iter 2.595284946652597 ns/iter 1.20
Regex_Nested_Backtrack 38.31337424528651 ns/iter 35.844638943767116 ns/iter 1.07
JSON_Array_Of_Objects_Unique 433.2769177636991 ns/iter 376.1713014490205 ns/iter 1.15
JSON_Parse_1 4665.529906859585 ns/iter 4228.441446352357 ns/iter 1.10
JSON_Parse_Real 5292.155563309692 ns/iter 4757.448872824584 ns/iter 1.11
JSON_Parse_Decimal 7820.702444968762 ns/iter 7356.491819814974 ns/iter 1.06
JSON_Parse_Schema_ISO_Language 3383964.444976352 ns/iter 3357323.88151628 ns/iter 1.01
JSON_Parse_Integer 3881.3777204736807 ns/iter 3628.4130746973924 ns/iter 1.07
JSON_Parse_String_NonSSO_Plain 3065.3498504241493 ns/iter 2782.9030677286096 ns/iter 1.10
JSON_Parse_String_SSO_Plain 2744.1683244636715 ns/iter 2307.8706693805552 ns/iter 1.19
JSON_Parse_String_Escape_Heavy 12231.842334798977 ns/iter 14087.211857596665 ns/iter 0.87
JSON_Parse_Object_Short_Keys 8244.620289718037 ns/iter 6817.855256109218 ns/iter 1.21
JSON_Parse_Object_Scalar_Properties 4256.977297724014 ns/iter 3557.7856842762967 ns/iter 1.20
JSON_Parse_Object_Array_Properties 5699.449074378555 ns/iter 4917.800273915879 ns/iter 1.16
JSON_Parse_Object_Object_Properties 5790.757786466055 ns/iter 4882.791186790714 ns/iter 1.19
JSON_Parse_Nested_Containers 35614.74490780717 ns/iter 31822.39754378404 ns/iter 1.12
JSON_From_String_Copy 11.449113273394307 ns/iter 8.828710410613812 ns/iter 1.30
JSON_From_String_Temporary 10.108909174617905 ns/iter 8.41426284142872 ns/iter 1.20
JSON_Number_To_Double 23.300051254076436 ns/iter 21.73328996984484 ns/iter 1.07
JSON_Object_At_Last_Key/8 5.849050137323842 ns/iter 5.813973809296038 ns/iter 1.01
JSON_Object_At_Last_Key/32 21.814912762243207 ns/iter 19.62079718174821 ns/iter 1.11
JSON_Object_At_Last_Key/128 90.43901135758466 ns/iter 75.4027239484618 ns/iter 1.20
JSON_Object_At_Last_Key/512 396.45761296150744 ns/iter 304.2148198672903 ns/iter 1.30
JSON_Fast_Hash_Helm_Chart_Lock 59.825865333118834 ns/iter 54.77125880535911 ns/iter 1.09
JSON_Equality_Helm_Chart_Lock 170.0507287134031 ns/iter 142.24031584893302 ns/iter 1.20
JSON_Divisible_By_Decimal 244.7246464740263 ns/iter 254.75203499242042 ns/iter 0.96
JSON_String_Equal/10 5.934887937866287 ns/iter 4.325690295423628 ns/iter 1.37
JSON_String_Equal/100 6.543515924289126 ns/iter 5.483453606202525 ns/iter 1.19
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9355778970419653 ns/iter 0.6916532219474825 ns/iter 1.35
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 10.27128931052275 ns/iter 9.511940530222896 ns/iter 1.08
JSON_String_Fast_Hash/10 2.5107092752993565 ns/iter 2.0264674484935994 ns/iter 1.24
JSON_String_Fast_Hash/100 2.496970118565113 ns/iter 2.020412543836115 ns/iter 1.24
JSON_String_Key_Hash/10 2.49348672868799 ns/iter 2.017400941349533 ns/iter 1.24
JSON_String_Key_Hash/100 6.534543610444851 ns/iter 6.632584977695258 ns/iter 0.99
JSON_Object_Defines_Miss_Same_Length 2.6994735213736365 ns/iter 3.4679442391910373 ns/iter 0.78
JSON_Object_Defines_Miss_Too_Small 2.9203890825061904 ns/iter 3.0262226213009416 ns/iter 0.97
JSON_Object_Defines_Miss_Too_Large 3.234673254960861 ns/iter 3.4588483629613873 ns/iter 0.94
Pointer_Object_Traverse 29.44454665600448 ns/iter 29.97079789204014 ns/iter 0.98
Pointer_Object_Try_Traverse 30.878740376181373 ns/iter 39.070394184337964 ns/iter 0.79
Pointer_Push_Back_Pointer_To_Weak_Pointer 148.47404409441026 ns/iter 142.60584925113952 ns/iter 1.04
Pointer_Walker_Schema_ISO_Language 1530438.698876352 ns/iter 1942483.1264367294 ns/iter 0.79
Pointer_Maybe_Tracked_Deeply_Nested/0 1223054.5596490595 ns/iter 1137770.5048700322 ns/iter 1.07
Pointer_Maybe_Tracked_Deeply_Nested/1 1611131.3669725421 ns/iter 2014772.1983002343 ns/iter 0.80
Pointer_Position_Tracker_Get_Deeply_Nested 644.1863634457012 ns/iter 696.0436555155467 ns/iter 0.93
JSONPath_Descendant_Filter_Nested 1495.447382832084 ns/iter 1375.6372306089067 ns/iter 1.09
URITemplateRouter_Create 23308.792023744285 ns/iter 20230.157401244895 ns/iter 1.15
URITemplateRouter_Match 182.40169831408713 ns/iter 155.1787175189985 ns/iter 1.18
URITemplateRouter_Match_BasePath 203.82123730663884 ns/iter 173.2700837432371 ns/iter 1.18
URITemplateRouterView_Restore 8537.912274896886 ns/iter 3732.563660710216 ns/iter 2.29
URITemplateRouterView_Match 160.58210120046374 ns/iter 142.25609013880398 ns/iter 1.13
URITemplateRouterView_Match_BasePath 184.13690485586022 ns/iter 159.5652786959523 ns/iter 1.15
URITemplateRouterView_Arguments 445.4289820474684 ns/iter 428.94197988826676 ns/iter 1.04
JSONL_Parse_Large 9219725.6052636 ns/iter 8395537.25301171 ns/iter 1.10
JSONL_Parse_Large_GZIP 10760421.83076949 ns/iter 9855448.619718323 ns/iter 1.09
JSONLD_Catalog_Annotation_List_Populate 601223.8339040274 ns/iter 671612.798486277 ns/iter 0.90
JSONLD_Catalog_Materialize 3491706.1200002306 ns/iter 3617665.1709844633 ns/iter 0.97
HTML_Build_Table_100000 56785581.63636312 ns/iter 59664265.666659355 ns/iter 0.95
HTML_Render_Table_100000 1785488.3634020237 ns/iter 3524833.4670050703 ns/iter 0.51
GZIP_Compress_ISO_Language_Set_3_Locations 32425694.31818187 ns/iter 31022096.91303909 ns/iter 1.05
GZIP_Decompress_ISO_Language_Set_3_Locations 4133717.6374264606 ns/iter 4964928.089552373 ns/iter 0.83
GZIP_Compress_ISO_Language_Set_3_Schema 1855346.1489362724 ns/iter 1862696.2284945762 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 358746.0241025535 ns/iter 340010.81589151063 ns/iter 1.06
JOSE_VerifySignature_RS256 60390.30315299332 ns/iter 49221.84342012706 ns/iter 1.23
JOSE_VerifySignature_ES512 2435281.4999997937 ns/iter 2108015.5421688813 ns/iter 1.16

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

Details
Benchmark suite Current: 6eba6aa Previous: 3e1d118 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.882815369706174 ns/iter 1.868143424877922 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.701093937530567 ns/iter 2.2580766707778217 ns/iter 0.75
Regex_Period_Asterisk 1.7020288305521352 ns/iter 1.787528595540095 ns/iter 0.95
Regex_Group_Period_Asterisk_Group 1.7641127424187941 ns/iter 1.8446062102550262 ns/iter 0.96
Regex_Period_Plus 2.380029993786785 ns/iter 2.4034381630774053 ns/iter 0.99
Regex_Period 2.243605836307915 ns/iter 2.1626874932896687 ns/iter 1.04
Regex_Caret_Period_Plus_Dollar 2.1959442226595898 ns/iter 2.202504473735838 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.0899985388836946 ns/iter 2.055102067784934 ns/iter 1.02
Regex_Caret_Period_Asterisk_Dollar 1.6968008181731769 ns/iter 1.782146651301697 ns/iter 0.95
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.6910155307796841 ns/iter 1.8529442196767445 ns/iter 0.91
Regex_Caret_X_Hyphen 6.08589151781797 ns/iter 6.522971040108916 ns/iter 0.93
Regex_Period_Md_Dollar 17.766798226956077 ns/iter 17.263617775183967 ns/iter 1.03
Regex_Caret_Slash_Period_Asterisk 4.973898816772421 ns/iter 5.065924900811986 ns/iter 0.98
Regex_Caret_Period_Range_Dollar 2.0446715699288576 ns/iter 2.9408047933410697 ns/iter 0.70
Regex_Nested_Backtrack 26.47541981329714 ns/iter 28.01045652768125 ns/iter 0.95
JSON_Array_Of_Objects_Unique 353.13450377721495 ns/iter 397.42592498420845 ns/iter 0.89
JSON_Parse_1 3091.001751770624 ns/iter 3144.7779434624217 ns/iter 0.98
JSON_Parse_Real 5025.637421918242 ns/iter 5240.181728212203 ns/iter 0.96
JSON_Parse_Decimal 5570.975735341507 ns/iter 5845.891665062545 ns/iter 0.95
JSON_Parse_Schema_ISO_Language 2339171.8241046467 ns/iter 2302835.1151318224 ns/iter 1.02
JSON_Parse_Integer 3053.990555340972 ns/iter 3316.329788609883 ns/iter 0.92
JSON_Parse_String_NonSSO_Plain 2983.5852584067848 ns/iter 3169.6869318158874 ns/iter 0.94
JSON_Parse_String_SSO_Plain 1678.3206171366353 ns/iter 1804.6337390163744 ns/iter 0.93
JSON_Parse_String_Escape_Heavy 17308.619564959234 ns/iter 17632.58628607189 ns/iter 0.98
JSON_Parse_Object_Short_Keys 5667.569551810399 ns/iter 5693.908461373438 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 2660.940731564081 ns/iter 2803.3237044861066 ns/iter 0.95
JSON_Parse_Object_Array_Properties 3301.917896541034 ns/iter 3732.0947755142115 ns/iter 0.88
JSON_Parse_Object_Object_Properties 3376.5407547284044 ns/iter 3726.63825277851 ns/iter 0.91
JSON_Parse_Nested_Containers 27157.080059857046 ns/iter 25879.68694907584 ns/iter 1.05
JSON_From_String_Copy 12.143583642290443 ns/iter 11.082411438320724 ns/iter 1.10
JSON_From_String_Temporary 7.542069244662543 ns/iter 6.748603100057906 ns/iter 1.12
JSON_Number_To_Double 37.88551769990094 ns/iter 34.83491269748545 ns/iter 1.09
JSON_Object_At_Last_Key/8 4.50569137845355 ns/iter 4.234703042921326 ns/iter 1.06
JSON_Object_At_Last_Key/32 12.173974591464521 ns/iter 12.776145574655306 ns/iter 0.95
JSON_Object_At_Last_Key/128 54.56391464767862 ns/iter 56.94222220977404 ns/iter 0.96
JSON_Object_At_Last_Key/512 198.97937527638314 ns/iter 200.55775220414196 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 58.953382937129774 ns/iter 61.411084520874006 ns/iter 0.96
JSON_Equality_Helm_Chart_Lock 141.69449303663234 ns/iter 154.1364276972294 ns/iter 0.92
JSON_Divisible_By_Decimal 175.88055400320593 ns/iter 195.52060480319645 ns/iter 0.90
JSON_String_Equal/10 7.109640173729667 ns/iter 7.426577140374459 ns/iter 0.96
JSON_String_Equal/100 6.808534387072753 ns/iter 7.2283031582439135 ns/iter 0.94
JSON_String_Equal_Small_By_Perfect_Hash/10 0.3389290363020107 ns/iter 0.3520226711945682 ns/iter 0.96
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.3687970207223414 ns/iter 3.3663789447876478 ns/iter 1.00
JSON_String_Fast_Hash/10 2.3725620008059694 ns/iter 2.4638133943692107 ns/iter 0.96
JSON_String_Fast_Hash/100 2.0300127175978764 ns/iter 2.1718386097666604 ns/iter 0.93
JSON_String_Key_Hash/10 1.7007041971346086 ns/iter 1.7401142870940456 ns/iter 0.98
JSON_String_Key_Hash/100 2.1432217674286145 ns/iter 2.2083027902362624 ns/iter 0.97
JSON_Object_Defines_Miss_Same_Length 2.8257678876338193 ns/iter 2.81049696825084 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Small 2.702873272295767 ns/iter 2.7622945159002956 ns/iter 0.98
JSON_Object_Defines_Miss_Too_Large 2.696686790095124 ns/iter 3.6088322761155145 ns/iter 0.75
Pointer_Object_Traverse 19.479346048073655 ns/iter 19.965211144923373 ns/iter 0.98
Pointer_Object_Try_Traverse 21.906243022117366 ns/iter 24.333243628441544 ns/iter 0.90
Pointer_Push_Back_Pointer_To_Weak_Pointer 139.55106974333466 ns/iter 148.28377026630568 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 1330874.7115717623 ns/iter 1376223.3727811151 ns/iter 0.97
Pointer_Maybe_Tracked_Deeply_Nested/0 854699.050632859 ns/iter 902076.290652975 ns/iter 0.95
Pointer_Maybe_Tracked_Deeply_Nested/1 1032754.4709387427 ns/iter 1187770.698052021 ns/iter 0.87
Pointer_Position_Tracker_Get_Deeply_Nested 345.89757671530504 ns/iter 403.2724670981848 ns/iter 0.86
JSONPath_Descendant_Filter_Nested 1322.645684018758 ns/iter 1230.6775588878556 ns/iter 1.07
URITemplateRouter_Create 18373.369952446148 ns/iter 18855.950062689033 ns/iter 0.97
URITemplateRouter_Match 173.66478474819547 ns/iter 183.44147147054684 ns/iter 0.95
URITemplateRouter_Match_BasePath 199.13496190354792 ns/iter 239.81510733933243 ns/iter 0.83
URITemplateRouterView_Restore 10386.196753135004 ns/iter 11083.809938453245 ns/iter 0.94
URITemplateRouterView_Match 140.35213770313032 ns/iter 146.35830408193226 ns/iter 0.96
URITemplateRouterView_Match_BasePath 158.94917899572505 ns/iter 169.43063824178702 ns/iter 0.94
URITemplateRouterView_Arguments 549.0727741164048 ns/iter 579.8310923353538 ns/iter 0.95
JSONL_Parse_Large 6988341.17821603 ns/iter 6598446.315315249 ns/iter 1.06
JSONL_Parse_Large_GZIP 7475060.188890994 ns/iter 7704164.835164133 ns/iter 0.97
JSONLD_Catalog_Annotation_List_Populate 487604.2674018606 ns/iter 556112.1670000375 ns/iter 0.88
JSONLD_Catalog_Materialize 2129314.345565166 ns/iter 2506085.793358019 ns/iter 0.85
HTML_Build_Table_100000 37428412.263161115 ns/iter 41020147.05882298 ns/iter 0.91
HTML_Render_Table_100000 1725261.462882384 ns/iter 1966947.6960486234 ns/iter 0.88
GZIP_Compress_ISO_Language_Set_3_Locations 27326093.320007205 ns/iter 28538121.500001047 ns/iter 0.96
GZIP_Decompress_ISO_Language_Set_3_Locations 3376674.1111121695 ns/iter 3975062.9516124865 ns/iter 0.85
GZIP_Compress_ISO_Language_Set_3_Schema 1526988.2127193725 ns/iter 1640259.3333335365 ns/iter 0.93
GZIP_Decompress_ISO_Language_Set_3_Schema 278542.342563256 ns/iter 292111.0996745661 ns/iter 0.95
JOSE_VerifySignature_RS256 21664.239104615295 ns/iter 22259.124734231915 ns/iter 0.97
JOSE_VerifySignature_ES512 1077113.5455821375 ns/iter 1024923.0905232576 ns/iter 1.05

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

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/gcc)

Details
Benchmark suite Current: 6eba6aa Previous: 3e1d118 Ratio
JOSE_VerifySignature_RS256 24470.261923188136 ns/iter 22101.53720930166 ns/iter 1.11
JOSE_VerifySignature_ES512 641042.2857143511 ns/iter 576968.7041905654 ns/iter 1.11
GZIP_Compress_ISO_Language_Set_3_Locations 39257888.99999816 ns/iter 36316672.63158234 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Locations 4023281.6954022152 ns/iter 4161923.886904956 ns/iter 0.97
GZIP_Compress_ISO_Language_Set_3_Schema 2293743.1213114127 ns/iter 2021862.5635836513 ns/iter 1.13
GZIP_Decompress_ISO_Language_Set_3_Schema 280023.60518961225 ns/iter 386395.26269801345 ns/iter 0.72
HTML_Build_Table_100000 60168554.6363652 ns/iter 56435371.54544861 ns/iter 1.07
HTML_Render_Table_100000 1878003.4359674165 ns/iter 1792061.7621483617 ns/iter 1.05
JSONLD_Catalog_Annotation_List_Populate 683543.2270057991 ns/iter 681361.1267056442 ns/iter 1.00
JSONLD_Catalog_Materialize 3664723.126903851 ns/iter 3499838.727272866 ns/iter 1.05
JSONL_Parse_Large 9177782.552632451 ns/iter 9820948.267606005 ns/iter 0.93
JSONL_Parse_Large_GZIP 10648139.384616464 ns/iter 11205630.968252731 ns/iter 0.95
URITemplateRouter_Create 20155.218600772085 ns/iter 21016.46062166891 ns/iter 0.96
URITemplateRouter_Match 163.02159190255884 ns/iter 164.87117392571722 ns/iter 0.99
URITemplateRouter_Match_BasePath 187.82307835879095 ns/iter 185.43352057601237 ns/iter 1.01
URITemplateRouterView_Restore 10088.183956104567 ns/iter 8394.31779691524 ns/iter 1.20
URITemplateRouterView_Match 126.84736488142276 ns/iter 127.36728231578856 ns/iter 1.00
URITemplateRouterView_Match_BasePath 144.31147873746298 ns/iter 144.87936165921144 ns/iter 1.00
URITemplateRouterView_Arguments 462.4011478208739 ns/iter 470.935384176182 ns/iter 0.98
JSONPath_Descendant_Filter_Nested 1684.7251167714205 ns/iter 1612.474267705516 ns/iter 1.04
Pointer_Object_Traverse 24.38096427439236 ns/iter 23.19325641885472 ns/iter 1.05
Pointer_Object_Try_Traverse 25.344768975908423 ns/iter 22.744842791922096 ns/iter 1.11
Pointer_Push_Back_Pointer_To_Weak_Pointer 134.5971992422181 ns/iter 132.26060561480196 ns/iter 1.02
Pointer_Walker_Schema_ISO_Language 1350064.7358120522 ns/iter 1408135.31160891 ns/iter 0.96
Pointer_Maybe_Tracked_Deeply_Nested/0 1234595.282456116 ns/iter 1208688.61063465 ns/iter 1.02
Pointer_Maybe_Tracked_Deeply_Nested/1 1649914.0520096826 ns/iter 1722650.3931205398 ns/iter 0.96
Pointer_Position_Tracker_Get_Deeply_Nested 678.4023101162536 ns/iter 599.277775030408 ns/iter 1.13
JSON_Array_Of_Objects_Unique 417.3363887980089 ns/iter 444.1995594437962 ns/iter 0.94
JSON_Parse_1 5046.053630576901 ns/iter 5249.098796381818 ns/iter 0.96
JSON_Parse_Real 5325.404181475258 ns/iter 5639.794278062028 ns/iter 0.94
JSON_Parse_Decimal 8428.935524531256 ns/iter 10213.540378370813 ns/iter 0.83
JSON_Parse_Schema_ISO_Language 3525841.218273863 ns/iter 3601621.481865847 ns/iter 0.98
JSON_Parse_Integer 3724.4862256966785 ns/iter 3682.149235981534 ns/iter 1.01
JSON_Parse_String_NonSSO_Plain 3428.1990182581717 ns/iter 3268.1126063047323 ns/iter 1.05
JSON_Parse_String_SSO_Plain 2782.773898059334 ns/iter 3014.7198011116825 ns/iter 0.92
JSON_Parse_String_Escape_Heavy 16208.535228182209 ns/iter 16648.717567599706 ns/iter 0.97
JSON_Parse_Object_Short_Keys 8640.134996903867 ns/iter 8379.323650659393 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 4364.88718070267 ns/iter 4253.195059744302 ns/iter 1.03
JSON_Parse_Object_Array_Properties 6715.616222668361 ns/iter 6392.622313362967 ns/iter 1.05
JSON_Parse_Object_Object_Properties 6552.472978156367 ns/iter 6591.551761119188 ns/iter 0.99
JSON_Parse_Nested_Containers 39326.22317621301 ns/iter 38786.33619344216 ns/iter 1.01
JSON_From_String_Copy 9.804713075141125 ns/iter 8.692148675840231 ns/iter 1.13
JSON_From_String_Temporary 8.532480641325936 ns/iter 7.398876177322743 ns/iter 1.15
JSON_Number_To_Double 19.711895990672026 ns/iter 21.187564406867164 ns/iter 0.93
JSON_Object_At_Last_Key/8 4.195771825071639 ns/iter 3.7472406751109237 ns/iter 1.12
JSON_Object_At_Last_Key/32 13.3755809145127 ns/iter 11.840434535447505 ns/iter 1.13
JSON_Object_At_Last_Key/128 47.41315144162491 ns/iter 48.593308623270836 ns/iter 0.98
JSON_Object_At_Last_Key/512 289.55855819377456 ns/iter 360.66574949198844 ns/iter 0.80
JSON_Fast_Hash_Helm_Chart_Lock 71.96106838757515 ns/iter 61.21684197824709 ns/iter 1.18
JSON_Equality_Helm_Chart_Lock 170.79782185783782 ns/iter 147.6973751437302 ns/iter 1.16
JSON_Divisible_By_Decimal 255.75492629031766 ns/iter 266.82155116814897 ns/iter 0.96
JSON_String_Equal/10 5.7222807624834156 ns/iter 5.383067169617077 ns/iter 1.06
JSON_String_Equal/100 6.4202162311421205 ns/iter 6.027594028105579 ns/iter 1.07
JSON_String_Equal_Small_By_Perfect_Hash/10 0.711371895123882 ns/iter 0.6262743049105542 ns/iter 1.14
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 22.03013557084572 ns/iter 25.191046211621053 ns/iter 0.87
JSON_String_Fast_Hash/10 2.462019895406923 ns/iter 2.2642719033122307 ns/iter 1.09
JSON_String_Fast_Hash/100 2.4708357950304682 ns/iter 2.2571210985156624 ns/iter 1.09
JSON_String_Key_Hash/10 1.0855836655876314 ns/iter 1.2463032554881113 ns/iter 0.87
JSON_String_Key_Hash/100 14.755346297324053 ns/iter 12.44066967900533 ns/iter 1.19
JSON_Object_Defines_Miss_Same_Length 3.1667304864202652 ns/iter 3.113368885108315 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Small 3.5204642809203808 ns/iter 3.112489518284147 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 3.16813166305643 ns/iter 3.1225383151483173 ns/iter 1.01
Regex_Lower_S_Or_Upper_S_Asterisk 1.0551986986083364 ns/iter 0.9345701875181324 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.7029612749932556 ns/iter 0.6228135543831659 ns/iter 1.13
Regex_Period_Asterisk 1.055629486618167 ns/iter 0.9336394320079977 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 0.7035619939680683 ns/iter 0.6224510929740247 ns/iter 1.13
Regex_Period_Plus 1.0551218570221972 ns/iter 0.9346429238473781 ns/iter 1.13
Regex_Period 0.7035876656553339 ns/iter 0.622906331131836 ns/iter 1.13
Regex_Caret_Period_Plus_Dollar 1.0557969298289929 ns/iter 0.9343967308518903 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 0.7032434236972402 ns/iter 0.6246915147986264 ns/iter 1.13
Regex_Caret_Period_Asterisk_Dollar 1.0546780450931663 ns/iter 0.9337307497682605 ns/iter 1.13
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.703563345683892 ns/iter 0.622694739284461 ns/iter 1.13
Regex_Caret_X_Hyphen 4.219771656870443 ns/iter 4.368118029665147 ns/iter 0.97
Regex_Period_Md_Dollar 32.8025711973364 ns/iter 29.425825261233133 ns/iter 1.11
Regex_Caret_Slash_Period_Asterisk 4.570561579843679 ns/iter 4.673294088474014 ns/iter 0.98
Regex_Caret_Period_Range_Dollar 1.4091076472230322 ns/iter 1.24814614420334 ns/iter 1.13
Regex_Nested_Backtrack 40.45576190334287 ns/iter 38.03832628801116 ns/iter 1.06

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: 6eba6aa Previous: 3e1d118 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.091056999999637 ns/iter 2.9776652665278633 ns/iter 1.71
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.227975999998762 ns/iter 2.957495888896274 ns/iter 1.77
Regex_Period_Asterisk 5.148542857142502 ns/iter 2.9165402862726313 ns/iter 1.77
Regex_Group_Period_Asterisk_Group 5.022146999999677 ns/iter 2.935413478211579 ns/iter 1.71
Regex_Period_Plus 5.168777999999747 ns/iter 3.0060845718671407 ns/iter 1.72
Regex_Period 5.029253999998673 ns/iter 2.9263006880456066 ns/iter 1.72
Regex_Caret_Period_Plus_Dollar 5.018488999999136 ns/iter 2.9340241058324295 ns/iter 1.71
Regex_Caret_Group_Period_Plus_Group_Dollar 5.061101785713618 ns/iter 2.9076959559266164 ns/iter 1.74
Regex_Caret_Period_Asterisk_Dollar 5.081491964284218 ns/iter 3.0064946834731328 ns/iter 1.69
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.572068750000524 ns/iter 2.945267183555622 ns/iter 1.89
Regex_Caret_X_Hyphen 8.764874960871259 ns/iter 6.1490553571417195 ns/iter 1.43
Regex_Period_Md_Dollar 46.02834477742895 ns/iter 28.449787372992386 ns/iter 1.62
Regex_Caret_Slash_Period_Asterisk 7.981739955358337 ns/iter 6.187823214286173 ns/iter 1.29
Regex_Caret_Period_Range_Dollar 5.73311300000114 ns/iter 3.1602060986883393 ns/iter 1.81
Regex_Nested_Backtrack 58.972642857152586 ns/iter 38.99767299107332 ns/iter 1.51
JSON_Array_Of_Objects_Unique 629.4617857142676 ns/iter 536.0658928572499 ns/iter 1.17
JSON_Parse_1 9016.984745601369 ns/iter 7778.414062501935 ns/iter 1.16
JSON_Parse_Real 15969.347116162275 ns/iter 12057.712499999494 ns/iter 1.32
JSON_Parse_Decimal 11965.173437499034 ns/iter 9478.465721136641 ns/iter 1.26
JSON_Parse_Schema_ISO_Language 7593808.888888513 ns/iter 7881426.666666711 ns/iter 0.96
JSON_Parse_Integer 6221.239285713816 ns/iter 4457.204352582859 ns/iter 1.40
JSON_Parse_String_NonSSO_Plain 7903.166057295654 ns/iter 6370.942857143648 ns/iter 1.24
JSON_Parse_String_SSO_Plain 3879.010044643496 ns/iter 2811.295798529232 ns/iter 1.38
JSON_Parse_String_Escape_Heavy 21915.303124998787 ns/iter 23197.723239696243 ns/iter 0.94
JSON_Parse_Object_Short_Keys 13594.143999359849 ns/iter 10398.467187499706 ns/iter 1.31
JSON_Parse_Object_Scalar_Properties 6855.484821429059 ns/iter 5327.933035713629 ns/iter 1.29
JSON_Parse_Object_Array_Properties 11660.937499998778 ns/iter 9417.622242759146 ns/iter 1.24
JSON_Parse_Object_Object_Properties 12205.15625000118 ns/iter 9436.17796348908 ns/iter 1.29
JSON_Parse_Nested_Containers 80591.3058035758 ns/iter 63425.0669643066 ns/iter 1.27
JSON_From_String_Copy 65.86193750000088 ns/iter 48.99904944867711 ns/iter 1.34
JSON_From_String_Temporary 60.966090000010816 ns/iter 56.09431999998833 ns/iter 1.09
JSON_Number_To_Double 120.23578571427963 ns/iter 89.67931742503959 ns/iter 1.34
JSON_Object_At_Last_Key/8 7.758065848213797 ns/iter 7.6287232142848085 ns/iter 1.02
JSON_Object_At_Last_Key/32 23.489015624996057 ns/iter 18.916896597471155 ns/iter 1.24
JSON_Object_At_Last_Key/128 91.89791294644019 ns/iter 91.59088169644139 ns/iter 1.00
JSON_Object_At_Last_Key/512 432.3038778153936 ns/iter 324.1121428570994 ns/iter 1.33
JSON_Fast_Hash_Helm_Chart_Lock 105.2758750000038 ns/iter 87.09739955357065 ns/iter 1.21
JSON_Equality_Helm_Chart_Lock 216.65700372068812 ns/iter 199.28488396053226 ns/iter 1.09
JSON_Divisible_By_Decimal 312.8582142857843 ns/iter 255.92389312164784 ns/iter 1.22
JSON_String_Equal/10 10.775793701893484 ns/iter 8.817167410715143 ns/iter 1.22
JSON_String_Equal/100 11.892632142856234 ns/iter 11.861587500000326 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5228696428574233 ns/iter 1.2940823214287482 ns/iter 1.95
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.383978730429847 ns/iter 10.107518750000821 ns/iter 1.42
JSON_String_Fast_Hash/10 6.790119642857917 ns/iter 4.187808124999037 ns/iter 1.62
JSON_String_Fast_Hash/100 6.7928660714271825 ns/iter 4.140939337750452 ns/iter 1.64
JSON_String_Key_Hash/10 5.41019910714218 ns/iter 3.1439392857147856 ns/iter 1.72
JSON_String_Key_Hash/100 11.893826785715028 ns/iter 8.332004427090625 ns/iter 1.43
JSON_Object_Defines_Miss_Same_Length 4.731170769489274 ns/iter 4.7880787500005795 ns/iter 0.99
JSON_Object_Defines_Miss_Too_Small 4.735976394622174 ns/iter 5.294893000000229 ns/iter 0.89
JSON_Object_Defines_Miss_Too_Large 4.774523448156121 ns/iter 5.243456000000606 ns/iter 0.91
Pointer_Object_Traverse 68.66880580356545 ns/iter 41.97925223214938 ns/iter 1.64
Pointer_Object_Try_Traverse 72.13138392858453 ns/iter 45.6150576284414 ns/iter 1.58
Pointer_Push_Back_Pointer_To_Weak_Pointer 187.63401171276266 ns/iter 147.7447321428928 ns/iter 1.27
Pointer_Walker_Schema_ISO_Language 10607015.625001991 ns/iter 10628518.749999927 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 2468922.088353676 ns/iter 2181684.062500011 ns/iter 1.13
Pointer_Maybe_Tracked_Deeply_Nested/1 3632451.3368981574 ns/iter 3772322.4598930706 ns/iter 0.96
Pointer_Position_Tracker_Get_Deeply_Nested 535.4281341108031 ns/iter 573.7636160714844 ns/iter 0.93
JSONPath_Descendant_Filter_Nested 2410.5100329129773 ns/iter 1754.8537096908562 ns/iter 1.37
URITemplateRouter_Create 40692.24888392549 ns/iter 36993.9118303567 ns/iter 1.10
URITemplateRouter_Match 237.68920338282808 ns/iter 249.79457033542934 ns/iter 0.95
URITemplateRouter_Match_BasePath 266.9343534346242 ns/iter 282.8069528116642 ns/iter 0.94
URITemplateRouterView_Restore 34219.53311770039 ns/iter 20525.523608418076 ns/iter 1.67
URITemplateRouterView_Match 181.87646266755493 ns/iter 179.61486247416633 ns/iter 1.01
URITemplateRouterView_Match_BasePath 213.6523498369163 ns/iter 198.49800676352848 ns/iter 1.08
URITemplateRouterView_Arguments 544.0763999999945 ns/iter 450.1229263062773 ns/iter 1.21
JSONL_Parse_Large 33161623.80951937 ns/iter 25440271.428570736 ns/iter 1.30
JSONL_Parse_Large_GZIP 33950040.00000199 ns/iter 25949246.153843958 ns/iter 1.31
JSONLD_Catalog_Annotation_List_Populate 3132855.8685449953 ns/iter 3016982.6271181763 ns/iter 1.04
JSONLD_Catalog_Materialize 8083992.18750111 ns/iter 7417498.888887368 ns/iter 1.09
HTML_Build_Table_100000 91784171.42857143 ns/iter 103776616.66666426 ns/iter 0.88
HTML_Render_Table_100000 7791645.555557301 ns/iter 13216244.000000188 ns/iter 0.59
GZIP_Compress_ISO_Language_Set_3_Locations 36334684.21052337 ns/iter 31546690.909088038 ns/iter 1.15
GZIP_Decompress_ISO_Language_Set_3_Locations 9947505.333332932 ns/iter 12510262.50000109 ns/iter 0.80
GZIP_Compress_ISO_Language_Set_3_Schema 2118086.086956401 ns/iter 2118452.1739126905 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 637700.8928570913 ns/iter 659012.5892858265 ns/iter 0.97
JOSE_VerifySignature_RS256 22616.424999995386 ns/iter 20297.019905981222 ns/iter 1.11
JOSE_VerifySignature_ES512 1401818.1249998207 ns/iter 1066923.750000066 ns/iter 1.31

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

@jviotti
jviotti merged commit d900b7c into main Aug 16, 2026
13 checks passed
@jviotti
jviotti deleted the text-utils-2 branch August 16, 2026 23:20
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