Skip to content

Implement a to_title_case text utility function#2394

Merged
jviotti merged 3 commits into
mainfrom
text-module
May 21, 2026
Merged

Implement a to_title_case text utility function#2394
jviotti merged 3 commits into
mainfrom
text-module

Conversation

@jviotti
Copy link
Copy Markdown
Member

@jviotti jviotti commented May 21, 2026

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

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

augmentcode Bot commented May 21, 2026

🤖 Augment PR Summary

Summary: This PR introduces a new sourcemeta::core::to_title_case utility and adds a dedicated text language component to the build.

Changes:

  • Added a new src/lang/text library with a public header <sourcemeta/core/text.h> and implementation for to_title_case.
  • Extended the top-level CMake build with a new SOURCEMETA_CORE_LANG_TEXT option and corresponding subdirectories for library + tests.
  • Updated package config (config.cmake.in) to support a new text component (sourcemeta_core_text.cmake).
  • Added GoogleTest coverage for to_title_case across snake_case/kebab-case and edge cases (empty, separators, digits, spaces).
  • Extended the find_package packaging test to link against sourcemeta::core::text.

Technical Notes: to_title_case performs in-place transformation by turning _/- into spaces and uppercasing the first character after each separator (without lowercasing other characters).

🤖 Was this summary useful? React with 👍 or 👎

Copy link
Copy Markdown

@augmentcode augmentcode Bot left a comment

Choose a reason for hiding this comment

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

Review completed. 3 suggestions posted.

Fix All in Augment

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

Comment thread config.cmake.in
list(APPEND SOURCEMETA_CORE_COMPONENTS markdown)
list(APPEND SOURCEMETA_CORE_COMPONENTS error)
list(APPEND SOURCEMETA_CORE_COMPONENTS options)
list(APPEND SOURCEMETA_CORE_COMPONENTS text)
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 21, 2026

Choose a reason for hiding this comment

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

Adding text to the default SOURCEMETA_CORE_COMPONENTS list means an installation built with -DSOURCEMETA_CORE_LANG_TEXT=OFF could still try to include(.../sourcemeta_core_text.cmake) by default and fail at find_package time if that export wasn’t installed. Consider guarding default component selection / inclusion based on whether the component was built and installed.

Severity: medium

Other Locations
  • config.cmake.in:141

Fix This in Augment

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


/// @ingroup text
///
/// Convert a string to Title Case in place. For example:
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 21, 2026

Choose a reason for hiding this comment

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

The doc comment calls this “Title Case”, but the implementation only uppercases the first character of each segment and leaves the rest unchanged (it does not lowercase existing uppercase letters). Consider clarifying the documented semantics so callers don’t assume full title-casing behavior.

Severity: low

Fix This in Augment

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

Comment thread src/lang/text/text.cc Outdated
if (character == '_' || character == '-') {
character = ' ';
capitalize_next = true;
} else if (capitalize_next) {
Copy link
Copy Markdown

@augmentcode augmentcode Bot May 21, 2026

Choose a reason for hiding this comment

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

capitalize_next is cleared after processing any character at a boundary (including digits/whitespace), so inputs like abc_123def become Abc 123def (the d won’t be capitalized). If the intent is “capitalize the next alphabetic character after separators”, consider skipping non-letters before clearing the flag.

Severity: low

Fix This in Augment

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

Copy link
Copy Markdown

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

Choose a reason for hiding this comment

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

1 issue found across 11 files

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

Re-trigger cubic

Comment thread src/lang/text/text.cc Outdated
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

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: c2e2baa Previous: 3140427 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.928585956931351 ns/iter 2.188698934791036 ns/iter 0.88
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.9373778325318194 ns/iter 2.182236112006209 ns/iter 0.89
Regex_Period_Asterisk 1.926243332171996 ns/iter 2.180018025531101 ns/iter 0.88
Regex_Group_Period_Asterisk_Group 1.9235118442975634 ns/iter 2.1811117007643666 ns/iter 0.88
Regex_Period_Plus 1.936796730548884 ns/iter 2.8029460601001435 ns/iter 0.69
Regex_Period 2.211865085328319 ns/iter 3.1154870351664306 ns/iter 0.71
Regex_Caret_Period_Plus_Dollar 1.926852207323249 ns/iter 2.8030146352317837 ns/iter 0.69
Regex_Caret_Group_Period_Plus_Group_Dollar 2.198428510085286 ns/iter 3.121081963795746 ns/iter 0.70
Regex_Caret_Period_Asterisk_Dollar 2.7402008139120855 ns/iter 3.1125117689704735 ns/iter 0.88
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.0189355933108093 ns/iter 3.4246348747370834 ns/iter 0.88
Regex_Caret_X_Hyphen 4.121777753001309 ns/iter 6.082336595646694 ns/iter 0.68
Regex_Period_Md_Dollar 20.869225191621194 ns/iter 27.805526371386033 ns/iter 0.75
Regex_Caret_Slash_Period_Asterisk 5.22403570727296 ns/iter 5.920709286030759 ns/iter 0.88
Regex_Caret_Period_Range_Dollar 3.0234161159299644 ns/iter 3.7366655752410605 ns/iter 0.81
Regex_Nested_Backtrack 28.798511201376467 ns/iter 37.09033891040521 ns/iter 0.78
JSON_Array_Of_Objects_Unique 332.05894402630986 ns/iter 407.91168144665716 ns/iter 0.81
JSON_Parse_1 4688.097219204004 ns/iter 5884.647079127517 ns/iter 0.80
JSON_Parse_Real 8092.712714006275 ns/iter 10851.984396222077 ns/iter 0.75
JSON_Parse_Decimal 9079.42155535732 ns/iter 11052.159430358188 ns/iter 0.82
JSON_Parse_Schema_ISO_Language 2990237.7370690214 ns/iter 3693338.492063631 ns/iter 0.81
JSON_Fast_Hash_Helm_Chart_Lock 57.43519658227454 ns/iter 64.59712777183897 ns/iter 0.89
JSON_Equality_Helm_Chart_Lock 122.01273336566265 ns/iter 166.08922363846278 ns/iter 0.73
JSON_Divisible_By_Decimal 186.54487233311042 ns/iter 237.75973140444916 ns/iter 0.78
JSON_String_Equal/10 4.9441595416586495 ns/iter 6.2361619220172315 ns/iter 0.79
JSON_String_Equal/100 5.7610068567094315 ns/iter 6.866933172058732 ns/iter 0.84
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8249842830012174 ns/iter 0.9370654940815811 ns/iter 0.88
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.64949419065138 ns/iter 14.630388345672516 ns/iter 0.66
JSON_String_Fast_Hash/10 2.2016746173033632 ns/iter 2.813281717044738 ns/iter 0.78
JSON_String_Fast_Hash/100 2.1957553422952705 ns/iter 2.809603708389769 ns/iter 0.78
JSON_String_Key_Hash/10 1.9237140548137301 ns/iter 2.3371359144064345 ns/iter 0.82
JSON_String_Key_Hash/100 6.328703509971559 ns/iter 9.041533491205895 ns/iter 0.70
JSON_Object_Defines_Miss_Same_Length 3.302292335990683 ns/iter 3.7659183155119784 ns/iter 0.88
JSON_Object_Defines_Miss_Too_Small 3.309337204131384 ns/iter 3.738571558731775 ns/iter 0.89
JSON_Object_Defines_Miss_Too_Large 3.3217187173896985 ns/iter 3.743613827461046 ns/iter 0.89
Pointer_Object_Traverse 21.56735707404302 ns/iter 24.24960901406413 ns/iter 0.89
Pointer_Object_Try_Traverse 24.18982611068329 ns/iter 26.112831795094927 ns/iter 0.93
Pointer_Push_Back_Pointer_To_Weak_Pointer 151.62178150517306 ns/iter 192.30805665699765 ns/iter 0.79
Pointer_Walker_Schema_ISO_Language 2445763.1637632027 ns/iter 3614462.5806452 ns/iter 0.68
Pointer_Maybe_Tracked_Deeply_Nested/0 1107585.9807073695 ns/iter 1443538.5619833833 ns/iter 0.77
Pointer_Maybe_Tracked_Deeply_Nested/1 1337648.9118773136 ns/iter 1830154.7244095255 ns/iter 0.73
Pointer_Position_Tracker_Get_Deeply_Nested 575.4022993788524 ns/iter 670.2369823819332 ns/iter 0.86
URITemplateRouter_Create 22782.40716094266 ns/iter 30846.258057396153 ns/iter 0.74
URITemplateRouter_Match 125.98788483167506 ns/iter 175.2307851884413 ns/iter 0.72
URITemplateRouter_Match_BasePath 150.44752068072827 ns/iter 202.8586097731312 ns/iter 0.74
URITemplateRouterView_Restore 6805.222505000734 ns/iter 8021.004585697855 ns/iter 0.85
URITemplateRouterView_Match 109.87880443137712 ns/iter 142.06353462021355 ns/iter 0.77
URITemplateRouterView_Match_BasePath 124.49309366030239 ns/iter 160.65168834820224 ns/iter 0.77
URITemplateRouterView_Arguments 369.0039992714411 ns/iter 456.08708884931326 ns/iter 0.81
JSONL_Parse_Large 8198370.802326049 ns/iter 11170140.523809494 ns/iter 0.73
JSONL_Parse_Large_GZIP 9136849.98684217 ns/iter 12444420.964912519 ns/iter 0.73
HTML_Build_Table_100000 71213639.39999697 ns/iter 69515058.63636178 ns/iter 1.02
HTML_Render_Table_100000 4485036.051281901 ns/iter 6381875.371134717 ns/iter 0.70
GZIP_Compress_ISO_Language_Set_3_Locations 28486162.625000585 ns/iter 35191479.50000274 ns/iter 0.81
GZIP_Decompress_ISO_Language_Set_3_Locations 3168308.181818185 ns/iter 5531412.264462766 ns/iter 0.57
GZIP_Compress_ISO_Language_Set_3_Schema 1667590.2261904897 ns/iter 1935263.7107435674 ns/iter 0.86
GZIP_Decompress_ISO_Language_Set_3_Schema 211623.4632463249 ns/iter 373513.3534759404 ns/iter 0.57

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

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

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: c2e2baa Previous: 3140427 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.7780640031310324 ns/iter 2.7372713289597157 ns/iter 1.01
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.727053505063922 ns/iter 2.2523377608656667 ns/iter 1.21
Regex_Period_Asterisk 2.9615235055153297 ns/iter 2.2806976289764576 ns/iter 1.30
Regex_Group_Period_Asterisk_Group 2.623213773292858 ns/iter 2.2759753539829326 ns/iter 1.15
Regex_Period_Plus 2.578331190604833 ns/iter 2.145543488998537 ns/iter 1.20
Regex_Period 2.2510582726777164 ns/iter 2.37583610236603 ns/iter 0.95
Regex_Caret_Period_Plus_Dollar 2.844096458552499 ns/iter 2.2357459078563626 ns/iter 1.27
Regex_Caret_Group_Period_Plus_Group_Dollar 2.44141580738069 ns/iter 2.2331677440312845 ns/iter 1.09
Regex_Caret_Period_Asterisk_Dollar 2.304502853083839 ns/iter 2.3721199945045957 ns/iter 0.97
Regex_Caret_Group_Period_Asterisk_Group_Dollar 2.312509937285426 ns/iter 2.214917127782426 ns/iter 1.04
Regex_Caret_X_Hyphen 6.736428220644971 ns/iter 6.288906028674785 ns/iter 1.07
Regex_Period_Md_Dollar 22.317691684529194 ns/iter 19.56217760075704 ns/iter 1.14
Regex_Caret_Slash_Period_Asterisk 8.515382819609046 ns/iter 8.802356494927267 ns/iter 0.97
Regex_Caret_Period_Range_Dollar 1.9246588298755953 ns/iter 2.0658312056066053 ns/iter 0.93
Regex_Nested_Backtrack 28.947532418847842 ns/iter 28.610186497379967 ns/iter 1.01
JSON_Array_Of_Objects_Unique 479.8850671984448 ns/iter 527.800142694235 ns/iter 0.91
JSON_Parse_1 5267.12063288055 ns/iter 4272.180969044753 ns/iter 1.23
JSON_Parse_Real 8230.97110428328 ns/iter 7130.527609650853 ns/iter 1.15
JSON_Parse_Decimal 11178.802038832773 ns/iter 9056.064286792132 ns/iter 1.23
JSON_Parse_Schema_ISO_Language 5577876.427350813 ns/iter 3424221.36966854 ns/iter 1.63
JSON_Fast_Hash_Helm_Chart_Lock 84.71058606046981 ns/iter 67.90747915602202 ns/iter 1.25
JSON_Equality_Helm_Chart_Lock 164.01547640145156 ns/iter 153.53209997624467 ns/iter 1.07
JSON_Divisible_By_Decimal 234.32647283212057 ns/iter 195.5637830723651 ns/iter 1.20
JSON_String_Equal/10 8.171860155429622 ns/iter 7.19244901573982 ns/iter 1.14
JSON_String_Equal/100 9.561959497853628 ns/iter 7.094347069416023 ns/iter 1.35
JSON_String_Equal_Small_By_Perfect_Hash/10 1.0032566044565139 ns/iter 0.8238420607675471 ns/iter 1.22
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 4.396345046453269 ns/iter 4.255628428584182 ns/iter 1.03
JSON_String_Fast_Hash/10 2.8998130055431135 ns/iter 2.701142685976385 ns/iter 1.07
JSON_String_Fast_Hash/100 2.5992307702458635 ns/iter 2.445971598270715 ns/iter 1.06
JSON_String_Key_Hash/10 1.9277714150198715 ns/iter 1.4941765652453283 ns/iter 1.29
JSON_String_Key_Hash/100 3.4433161570451327 ns/iter 2.643110431313784 ns/iter 1.30
JSON_Object_Defines_Miss_Same_Length 3.3037637803104247 ns/iter 2.888458478308833 ns/iter 1.14
JSON_Object_Defines_Miss_Too_Small 3.136561993050173 ns/iter 2.471276441048757 ns/iter 1.27
JSON_Object_Defines_Miss_Too_Large 3.09162802727734 ns/iter 2.4262865937639058 ns/iter 1.27
Pointer_Object_Traverse 19.994084995618596 ns/iter 15.524399574628404 ns/iter 1.29
Pointer_Object_Try_Traverse 28.61765049280988 ns/iter 22.329150128515654 ns/iter 1.28
Pointer_Push_Back_Pointer_To_Weak_Pointer 212.4094001808497 ns/iter 175.0117994685263 ns/iter 1.21
Pointer_Walker_Schema_ISO_Language 6020515.178294257 ns/iter 4811519.8275864115 ns/iter 1.25
Pointer_Maybe_Tracked_Deeply_Nested/0 1786542.2612245237 ns/iter 1154068.6507936742 ns/iter 1.55
Pointer_Maybe_Tracked_Deeply_Nested/1 2000562.1910445709 ns/iter 1522278.3364928789 ns/iter 1.31
Pointer_Position_Tracker_Get_Deeply_Nested 572.2358605062319 ns/iter 362.0659546356509 ns/iter 1.58
URITemplateRouter_Create 35408.13066997915 ns/iter 24197.175166698835 ns/iter 1.46
URITemplateRouter_Match 196.44400609506502 ns/iter 183.4278697031603 ns/iter 1.07
URITemplateRouter_Match_BasePath 244.94417728978297 ns/iter 228.93373012924883 ns/iter 1.07
URITemplateRouterView_Restore 14461.176350485046 ns/iter 12385.06729037768 ns/iter 1.17
URITemplateRouterView_Match 160.03471259718108 ns/iter 159.92408699135072 ns/iter 1.00
URITemplateRouterView_Match_BasePath 185.3652173024237 ns/iter 191.6029727615551 ns/iter 0.97
URITemplateRouterView_Arguments 509.4454175155254 ns/iter 496.7284427204709 ns/iter 1.03
JSONL_Parse_Large 15533974.585365264 ns/iter 14450185.000000602 ns/iter 1.08
JSONL_Parse_Large_GZIP 18489879.95238293 ns/iter 14986322.11538419 ns/iter 1.23
HTML_Build_Table_100000 86101761.85714279 ns/iter 77246018.55555749 ns/iter 1.11
HTML_Render_Table_100000 5781699.634783012 ns/iter 3913771.516339711 ns/iter 1.48
GZIP_Compress_ISO_Language_Set_3_Locations 44371276.062499024 ns/iter 35165489.58333487 ns/iter 1.26
GZIP_Decompress_ISO_Language_Set_3_Locations 6418592.948717428 ns/iter 6094710.78431335 ns/iter 1.05
GZIP_Compress_ISO_Language_Set_3_Schema 2046472.5674930965 ns/iter 1751823.3032405376 ns/iter 1.17
GZIP_Decompress_ISO_Language_Set_3_Schema 365868.23056301783 ns/iter 316061.1066053425 ns/iter 1.16

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

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

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: c2e2baa Previous: 3140427 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 8.829273174869503 ns/iter 7.543696428571017 ns/iter 1.17
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 8.830096835580315 ns/iter 7.498055803572308 ns/iter 1.18
Regex_Period_Asterisk 8.828106657016402 ns/iter 7.491106026785234 ns/iter 1.18
Regex_Group_Period_Asterisk_Group 8.953595049315636 ns/iter 7.48655178571462 ns/iter 1.20
Regex_Period_Plus 11.289751562500783 ns/iter 9.66111290329962 ns/iter 1.17
Regex_Period 11.291126785713296 ns/iter 9.656699956890472 ns/iter 1.17
Regex_Caret_Period_Plus_Dollar 11.282998437499359 ns/iter 9.663739242572614 ns/iter 1.17
Regex_Caret_Group_Period_Plus_Group_Dollar 11.27721562500028 ns/iter 9.655438349752778 ns/iter 1.17
Regex_Caret_Period_Asterisk_Dollar 8.82981290700874 ns/iter 7.484540178570905 ns/iter 1.18
Regex_Caret_Group_Period_Asterisk_Group_Dollar 8.831083705356235 ns/iter 7.52727901785631 ns/iter 1.17
Regex_Caret_X_Hyphen 13.472732752352197 ns/iter 11.896373437499719 ns/iter 1.13
Regex_Period_Md_Dollar 45.32320629175361 ns/iter 38.77129216479827 ns/iter 1.17
Regex_Caret_Slash_Period_Asterisk 13.044539285715473 ns/iter 11.381403571428043 ns/iter 1.15
Regex_Caret_Period_Range_Dollar 11.28877812499951 ns/iter 9.659140135450023 ns/iter 1.17
Regex_Nested_Backtrack 49.973610000006374 ns/iter 46.443697465259866 ns/iter 1.08
JSON_Array_Of_Objects_Unique 494.0685999999914 ns/iter 461.52050584271916 ns/iter 1.07
JSON_Parse_1 8020.478794642675 ns/iter 8469.899553570518 ns/iter 0.95
JSON_Parse_Real 14207.157780544974 ns/iter 15862.883928571746 ns/iter 0.90
JSON_Parse_Decimal 14135.507653983055 ns/iter 14840.206516935647 ns/iter 0.95
JSON_Parse_Schema_ISO_Language 6101450.892856519 ns/iter 5785642.857142242 ns/iter 1.05
JSON_Fast_Hash_Helm_Chart_Lock 64.34802455357007 ns/iter 55.292910714287906 ns/iter 1.16
JSON_Equality_Helm_Chart_Lock 278.52421779129764 ns/iter 254.29067876296108 ns/iter 1.10
JSON_Divisible_By_Decimal 255.85627258289568 ns/iter 251.46810944052885 ns/iter 1.02
JSON_String_Equal/10 12.461328571427137 ns/iter 12.538867857143389 ns/iter 0.99
JSON_String_Equal/100 13.191260714285542 ns/iter 13.202350000000251 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 1.7684093538629264 ns/iter 1.8787794659632158 ns/iter 0.94
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 11.383739062500453 ns/iter 12.858860714286736 ns/iter 0.89
JSON_String_Fast_Hash/10 3.58699981502294 ns/iter 3.1325625048945422 ns/iter 1.15
JSON_String_Fast_Hash/100 3.533568030193045 ns/iter 3.2672393749997752 ns/iter 1.08
JSON_String_Key_Hash/10 4.239375466857763 ns/iter 3.7688866004130714 ns/iter 1.12
JSON_String_Key_Hash/100 16.92298671703174 ns/iter 14.386588328631147 ns/iter 1.18
JSON_Object_Defines_Miss_Same_Length 4.05648106418515 ns/iter 3.7790524553571454 ns/iter 1.07
JSON_Object_Defines_Miss_Too_Small 3.9941223285609686 ns/iter 3.763999278992716 ns/iter 1.06
JSON_Object_Defines_Miss_Too_Large 4.962053000000424 ns/iter 5.016879999999446 ns/iter 0.99
Pointer_Object_Traverse 42.145263250893194 ns/iter 39.79810825892446 ns/iter 1.06
Pointer_Object_Try_Traverse 53.56763392856781 ns/iter 52.20409821429176 ns/iter 1.03
Pointer_Push_Back_Pointer_To_Weak_Pointer 154.42033482143202 ns/iter 159.72749999999536 ns/iter 0.97
Pointer_Walker_Schema_ISO_Language 12141828.57142987 ns/iter 10970587.500001017 ns/iter 1.11
Pointer_Maybe_Tracked_Deeply_Nested/0 2150756.0714285644 ns/iter 2018900.3571427325 ns/iter 1.07
Pointer_Maybe_Tracked_Deeply_Nested/1 2973922.4576267865 ns/iter 3181424.1071427115 ns/iter 0.93
Pointer_Position_Tracker_Get_Deeply_Nested 626.7198660714664 ns/iter 611.2722098214261 ns/iter 1.03
URITemplateRouter_Create 38071.45497483833 ns/iter 40610.9744065958 ns/iter 0.94
URITemplateRouter_Match 211.84290624997718 ns/iter 217.30784374998535 ns/iter 0.97
URITemplateRouter_Match_BasePath 246.0767500000267 ns/iter 247.6501785714293 ns/iter 0.99
URITemplateRouterView_Restore 23366.83295945167 ns/iter 30219.37053571122 ns/iter 0.77
URITemplateRouterView_Match 157.86180803572287 ns/iter 157.20919642855537 ns/iter 1.00
URITemplateRouterView_Match_BasePath 181.15911438921344 ns/iter 184.41670654574315 ns/iter 0.98
URITemplateRouterView_Arguments 443.08974999999856 ns/iter 447.45661005629194 ns/iter 0.99
JSONL_Parse_Large 28817232.00000124 ns/iter 28072208.00000323 ns/iter 1.03
JSONL_Parse_Large_GZIP 28424516.000000037 ns/iter 27689724.000001658 ns/iter 1.03
HTML_Build_Table_100000 90984299.99999423 ns/iter 87658522.22221485 ns/iter 1.04
HTML_Render_Table_100000 7814615.555556278 ns/iter 8045425.555556247 ns/iter 0.97
GZIP_Compress_ISO_Language_Set_3_Locations 43644488.23529903 ns/iter 41207182.35293787 ns/iter 1.06
GZIP_Decompress_ISO_Language_Set_3_Locations 11414557.812500447 ns/iter 10783876.562500793 ns/iter 1.06
GZIP_Compress_ISO_Language_Set_3_Schema 2505435.3571432233 ns/iter 2294965.8862878485 ns/iter 1.09
GZIP_Decompress_ISO_Language_Set_3_Schema 657125.1785714034 ns/iter 682883.3705357441 ns/iter 0.96

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

Copy link
Copy Markdown

@github-actions github-actions Bot left a comment

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: c2e2baa Previous: 3140427 Ratio
GZIP_Compress_ISO_Language_Set_3_Locations 41077113.941174924 ns/iter 41123420.764707215 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4510846.290322074 ns/iter 4712804.44666642 ns/iter 0.96
GZIP_Compress_ISO_Language_Set_3_Schema 2354825.838926365 ns/iter 2342150.1304347813 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Schema 304707.03231854347 ns/iter 335503.12494194723 ns/iter 0.91
HTML_Build_Table_100000 64830008.27273083 ns/iter 65450096.45455222 ns/iter 0.99
HTML_Render_Table_100000 1928914.656509682 ns/iter 2338851.3061223994 ns/iter 0.82
JSONL_Parse_Large 12408771.732142197 ns/iter 12308243.526314996 ns/iter 1.01
JSONL_Parse_Large_GZIP 13566793.137255551 ns/iter 13620054.384616127 ns/iter 1.00
URITemplateRouter_Create 29793.75185988305 ns/iter 29810.75108764421 ns/iter 1.00
URITemplateRouter_Match 169.63849770702737 ns/iter 177.2078861588557 ns/iter 0.96
URITemplateRouter_Match_BasePath 201.35430157658772 ns/iter 208.62259118204133 ns/iter 0.97
URITemplateRouterView_Restore 8360.468577820408 ns/iter 8670.100957735222 ns/iter 0.96
URITemplateRouterView_Match 135.8959309800005 ns/iter 138.78994639928226 ns/iter 0.98
URITemplateRouterView_Match_BasePath 158.4256866456809 ns/iter 161.5554353687478 ns/iter 0.98
URITemplateRouterView_Arguments 471.6286403858261 ns/iter 473.5728176287495 ns/iter 1.00
Pointer_Object_Traverse 26.521733994327082 ns/iter 26.512813740539865 ns/iter 1.00
Pointer_Object_Try_Traverse 22.020228364181822 ns/iter 21.934809453531866 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 168.69597707018968 ns/iter 150.9002818344394 ns/iter 1.12
Pointer_Walker_Schema_ISO_Language 3381355.899521483 ns/iter 3476011.15121972 ns/iter 0.97
Pointer_Maybe_Tracked_Deeply_Nested/0 1538998.818181882 ns/iter 1554090.625850294 ns/iter 0.99
Pointer_Maybe_Tracked_Deeply_Nested/1 1702829.8973103103 ns/iter 1711232.9779950997 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 533.4667279998939 ns/iter 454.57203544609115 ns/iter 1.17
JSON_Array_Of_Objects_Unique 421.44772317994943 ns/iter 449.2145083768266 ns/iter 0.94
JSON_Parse_1 7789.8747887382115 ns/iter 7768.549080297841 ns/iter 1.00
JSON_Parse_Real 11594.834650486539 ns/iter 11866.928708116742 ns/iter 0.98
JSON_Parse_Decimal 16415.074098468074 ns/iter 16415.05831026756 ns/iter 1.00
JSON_Parse_Schema_ISO_Language 4590456.11111069 ns/iter 4594722.039473859 ns/iter 1.00
JSON_Fast_Hash_Helm_Chart_Lock 61.489418042455306 ns/iter 67.87165628580377 ns/iter 0.91
JSON_Equality_Helm_Chart_Lock 176.81053925537552 ns/iter 171.07579014127657 ns/iter 1.03
JSON_Divisible_By_Decimal 230.3831342865068 ns/iter 229.3684707835202 ns/iter 1.00
JSON_String_Equal/10 6.068295590946748 ns/iter 6.0679310045290995 ns/iter 1.00
JSON_String_Equal/100 6.807422714296098 ns/iter 6.805296743643042 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7125620213409541 ns/iter 0.7146770950280701 ns/iter 1.00
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 22.005928723264606 ns/iter 21.945760010273386 ns/iter 1.00
JSON_String_Fast_Hash/10 1.0567952774291247 ns/iter 1.0557633347904514 ns/iter 1.00
JSON_String_Fast_Hash/100 1.0616628428301205 ns/iter 1.0561769712788016 ns/iter 1.01
JSON_String_Key_Hash/10 1.759925741261589 ns/iter 1.759666829463218 ns/iter 1.00
JSON_String_Key_Hash/100 14.755845026632137 ns/iter 14.762563195263667 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.871778851390738 ns/iter 3.868181807687677 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 4.219973516087185 ns/iter 4.227594142773989 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.5174707047386367 ns/iter 3.517857228450802 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 1.0586491576920043 ns/iter 1.0559383242099942 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.0543961604106136 ns/iter 1.0546167995782716 ns/iter 1.00
Regex_Period_Asterisk 0.7036270285342935 ns/iter 0.7033523577106513 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.7033743406113612 ns/iter 0.7036543566209222 ns/iter 1.00
Regex_Period_Plus 1.0551548280196332 ns/iter 1.0766995342718413 ns/iter 0.98
Regex_Period 1.0587574192446045 ns/iter 1.0558602002234907 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.7032035423754566 ns/iter 0.705200493623136 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.7035441902572497 ns/iter 0.7038661855280829 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 1.0586436795510719 ns/iter 1.060324367718006 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.0553024606143848 ns/iter 1.0547626349022583 ns/iter 1.00
Regex_Caret_X_Hyphen 4.574848737782466 ns/iter 4.221110030296819 ns/iter 1.08
Regex_Period_Md_Dollar 35.485672780850614 ns/iter 32.781044402077285 ns/iter 1.08
Regex_Caret_Slash_Period_Asterisk 4.219286848831077 ns/iter 4.219601588350239 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 1.0556655264162784 ns/iter 1.0561564222007567 ns/iter 1.00
Regex_Nested_Backtrack 39.86488399305286 ns/iter 38.37290982927079 ns/iter 1.04

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

@jviotti jviotti merged commit 39431ca into main May 21, 2026
13 checks passed
@jviotti jviotti deleted the text-module branch May 21, 2026 17:29
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