Skip to content

Implement a canonical_decomposition Unicode helper#2431

Merged
jviotti merged 1 commit into
mainfrom
canonical-decomposition
May 27, 2026
Merged

Implement a canonical_decomposition Unicode helper#2431
jviotti merged 1 commit into
mainfrom
canonical-decomposition

Conversation

@jviotti
Copy link
Copy Markdown
Member

@jviotti jviotti commented May 27, 2026

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

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.

No issues found across 6 files

Re-trigger cubic

@augmentcode
Copy link
Copy Markdown

augmentcode Bot commented May 27, 2026

🤖 Augment PR Summary

Summary: Adds a new Unicode helper to fetch a codepoint’s (non-recursive) canonical decomposition as a stable std::u32string_view.

Changes:

  • Extends the Unicode table generator to parse UnicodeData.txt and emit a packed two-stage lookup plus a flat decomposition blob.
  • Updates the Unicode CMake codegen command to include UnicodeData.txt as an input and build dependency.
  • Exports sourcemeta::core::canonical_decomposition(char32_t) in the public Unicode API and implements it using the generated tables.
  • Adds unit tests covering empty decompositions, singleton mappings, two-codepoint mappings, Hangul syllables (algorithmic case), and out-of-range codepoints.

Technical Notes: Decomposition data is stored as a compact packed (length+offset) entry per codepoint with page-table deduplication, returning a view into static storage for the program lifetime.

🤖 Was this summary useful? React with 👍 or 👎

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: 15141f2 Previous: 34aaf42 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.9951613275691893 ns/iter 2.015404070601422 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.6241808882135178 ns/iter 1.6733021658577518 ns/iter 0.97
Regex_Period_Asterisk 1.6981316904552592 ns/iter 1.7430201504761764 ns/iter 0.97
Regex_Group_Period_Asterisk_Group 1.7026295896011907 ns/iter 1.676928103898694 ns/iter 1.02
Regex_Period_Plus 2.0283431680275887 ns/iter 2.036722050117288 ns/iter 1.00
Regex_Period 2.166840174683681 ns/iter 2.0031644564651785 ns/iter 1.08
Regex_Caret_Period_Plus_Dollar 2.016772795255842 ns/iter 2.0071483705122146 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 2.080207358461709 ns/iter 2.0316623320679557 ns/iter 1.02
Regex_Caret_Period_Asterisk_Dollar 1.7501844103142519 ns/iter 1.641974619876991 ns/iter 1.07
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.8084903758652857 ns/iter 1.6949674675057504 ns/iter 1.07
Regex_Caret_X_Hyphen 6.015341397708351 ns/iter 5.940912246483082 ns/iter 1.01
Regex_Period_Md_Dollar 19.884493183584656 ns/iter 16.239740032166424 ns/iter 1.22
Regex_Caret_Slash_Period_Asterisk 7.472810313830937 ns/iter 8.023387347090946 ns/iter 0.93
Regex_Caret_Period_Range_Dollar 1.5987583163069823 ns/iter 1.6774691319703472 ns/iter 0.95
Regex_Nested_Backtrack 23.526041554668208 ns/iter 24.666615026730817 ns/iter 0.95
JSON_Array_Of_Objects_Unique 395.94869354559063 ns/iter 411.7977410463283 ns/iter 0.96
JSON_Parse_1 3648.996622344662 ns/iter 3931.465042164926 ns/iter 0.93
JSON_Parse_Real 5960.316875975064 ns/iter 6195.790571690038 ns/iter 0.96
JSON_Parse_Decimal 7599.51328834422 ns/iter 8054.806417488824 ns/iter 0.94
JSON_Parse_Schema_ISO_Language 2593443.617100551 ns/iter 2890635.5085471924 ns/iter 0.90
JSON_Fast_Hash_Helm_Chart_Lock 54.23514166541274 ns/iter 57.77418700423594 ns/iter 0.94
JSON_Equality_Helm_Chart_Lock 123.52676795854939 ns/iter 133.77942099669124 ns/iter 0.92
JSON_Divisible_By_Decimal 161.84452112890443 ns/iter 167.0517532634962 ns/iter 0.97
JSON_String_Equal/10 6.447689960257783 ns/iter 6.791364545344627 ns/iter 0.95
JSON_String_Equal/100 6.4018472143585425 ns/iter 6.426778040372567 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7578691329126244 ns/iter 0.745839705560343 ns/iter 1.02
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.287493784068819 ns/iter 3.3302660899369285 ns/iter 0.99
JSON_String_Fast_Hash/10 2.258600912103879 ns/iter 2.2749144583377823 ns/iter 0.99
JSON_String_Fast_Hash/100 1.9172987836887394 ns/iter 2.0377962212866 ns/iter 0.94
JSON_String_Key_Hash/10 1.2594991358454084 ns/iter 1.346218129224088 ns/iter 0.94
JSON_String_Key_Hash/100 2.0891284703635593 ns/iter 2.111272696455072 ns/iter 0.99
JSON_Object_Defines_Miss_Same_Length 2.195242630019452 ns/iter 2.360349048974053 ns/iter 0.93
JSON_Object_Defines_Miss_Too_Small 2.19286833032047 ns/iter 2.348470976952758 ns/iter 0.93
JSON_Object_Defines_Miss_Too_Large 2.1934049447310096 ns/iter 2.375928670654803 ns/iter 0.92
Pointer_Object_Traverse 13.389269406033288 ns/iter 13.520664512305908 ns/iter 0.99
Pointer_Object_Try_Traverse 17.911584052575225 ns/iter 19.304405281867062 ns/iter 0.93
Pointer_Push_Back_Pointer_To_Weak_Pointer 144.85583061544986 ns/iter 153.92188429430786 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 3993090.815384466 ns/iter 4316204.505747156 ns/iter 0.93
Pointer_Maybe_Tracked_Deeply_Nested/0 908920.4119850643 ns/iter 1051080.8237951144 ns/iter 0.86
Pointer_Maybe_Tracked_Deeply_Nested/1 1123972.127986391 ns/iter 1279195.7982608436 ns/iter 0.88
Pointer_Position_Tracker_Get_Deeply_Nested 325.786149727991 ns/iter 354.392526010201 ns/iter 0.92
URITemplateRouter_Create 21182.03271996217 ns/iter 22084.5433717797 ns/iter 0.96
URITemplateRouter_Match 151.65956684510533 ns/iter 164.24413381300494 ns/iter 0.92
URITemplateRouter_Match_BasePath 191.4934235502854 ns/iter 186.6910522366328 ns/iter 1.03
URITemplateRouterView_Restore 8728.890285486767 ns/iter 9300.954983399031 ns/iter 0.94
URITemplateRouterView_Match 121.65766443584437 ns/iter 130.42821700380247 ns/iter 0.93
URITemplateRouterView_Match_BasePath 136.65378404257123 ns/iter 145.1091451974123 ns/iter 0.94
URITemplateRouterView_Arguments 375.50257351052505 ns/iter 407.44087603850085 ns/iter 0.92
JSONL_Parse_Large 11253685.841269983 ns/iter 11612096.745763002 ns/iter 0.97
JSONL_Parse_Large_GZIP 12453494.157895014 ns/iter 13347250.000000106 ns/iter 0.93
HTML_Build_Table_100000 58983374.99999943 ns/iter 64212370.33335577 ns/iter 0.92
HTML_Render_Table_100000 2842952.2515527923 ns/iter 3164331.756302434 ns/iter 0.90
GZIP_Compress_ISO_Language_Set_3_Locations 25704967.59259371 ns/iter 27898090.291661978 ns/iter 0.92
GZIP_Decompress_ISO_Language_Set_3_Locations 4465728.897435803 ns/iter 5228231.702701762 ns/iter 0.85
GZIP_Compress_ISO_Language_Set_3_Schema 1409767.7499999008 ns/iter 1515523.20833341 ns/iter 0.93
GZIP_Decompress_ISO_Language_Set_3_Schema 264410.6329629663 ns/iter 279213.07284770627 ns/iter 0.95

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

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

Fix All in Augment

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

Comment thread src/core/unicode/include/sourcemeta/core/unicode.h Outdated
Comment thread test/unicode/unicode_canonical_decomposition_test.cc
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: 15141f2 Previous: 34aaf42 Ratio
GZIP_Compress_ISO_Language_Set_3_Locations 41689032.64706066 ns/iter 38864782.2777778 ns/iter 1.07
GZIP_Decompress_ISO_Language_Set_3_Locations 4532572.974193456 ns/iter 4628479.026489955 ns/iter 0.98
GZIP_Compress_ISO_Language_Set_3_Schema 2341823.7643098263 ns/iter 2082007.7492537654 ns/iter 1.12
GZIP_Decompress_ISO_Language_Set_3_Schema 294409.8345070521 ns/iter 394206.05762710836 ns/iter 0.75
HTML_Build_Table_100000 70942602.20000024 ns/iter 58907368.08332994 ns/iter 1.20
HTML_Render_Table_100000 2174825.20615389 ns/iter 1824407.5910289958 ns/iter 1.19
JSONL_Parse_Large 12066087.293102955 ns/iter 12677630.40000008 ns/iter 0.95
JSONL_Parse_Large_GZIP 13449973.96153885 ns/iter 13884842.725489903 ns/iter 0.97
URITemplateRouter_Create 30086.58577906956 ns/iter 30816.78615080139 ns/iter 0.98
URITemplateRouter_Match 176.47399181264853 ns/iter 174.51157363406176 ns/iter 1.01
URITemplateRouter_Match_BasePath 206.46651311847648 ns/iter 198.59757157546576 ns/iter 1.04
URITemplateRouterView_Restore 8629.969620409604 ns/iter 7742.765142508131 ns/iter 1.11
URITemplateRouterView_Match 131.43904116226835 ns/iter 140.59993679831857 ns/iter 0.93
URITemplateRouterView_Match_BasePath 155.77424703959161 ns/iter 161.27852470063084 ns/iter 0.97
URITemplateRouterView_Arguments 457.9340002815763 ns/iter 491.5550231788312 ns/iter 0.93
Pointer_Object_Traverse 27.482593448570835 ns/iter 26.594318239594212 ns/iter 1.03
Pointer_Object_Try_Traverse 22.130204664929657 ns/iter 22.452926442287986 ns/iter 0.99
Pointer_Push_Back_Pointer_To_Weak_Pointer 150.65258932863892 ns/iter 157.57648111454705 ns/iter 0.96
Pointer_Walker_Schema_ISO_Language 3461048.067307524 ns/iter 3268673.6226415774 ns/iter 1.06
Pointer_Maybe_Tracked_Deeply_Nested/0 1551333.9094922638 ns/iter 1601148.694954205 ns/iter 0.97
Pointer_Maybe_Tracked_Deeply_Nested/1 1717840.37254896 ns/iter 1812795.1731265746 ns/iter 0.95
Pointer_Position_Tracker_Get_Deeply_Nested 572.5807931729091 ns/iter 559.7862318933531 ns/iter 1.02
JSON_Array_Of_Objects_Unique 434.62304298744465 ns/iter 415.9294043151167 ns/iter 1.04
JSON_Parse_1 7871.451046212837 ns/iter 8168.218335301968 ns/iter 0.96
JSON_Parse_Real 11823.130600620123 ns/iter 12230.258475014743 ns/iter 0.97
JSON_Parse_Decimal 16606.660927308632 ns/iter 17884.528944004367 ns/iter 0.93
JSON_Parse_Schema_ISO_Language 4594599.16993447 ns/iter 4648866.699999795 ns/iter 0.99
JSON_Fast_Hash_Helm_Chart_Lock 63.82031389616179 ns/iter 71.63840457070681 ns/iter 0.89
JSON_Equality_Helm_Chart_Lock 167.1145217726482 ns/iter 151.05089232566777 ns/iter 1.11
JSON_Divisible_By_Decimal 229.1305523782496 ns/iter 239.2940401120863 ns/iter 0.96
JSON_String_Equal/10 5.793283192838073 ns/iter 5.729719246162577 ns/iter 1.01
JSON_String_Equal/100 6.6250199897258435 ns/iter 6.540822276473385 ns/iter 1.01
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7123165326586697 ns/iter 0.6236621106885242 ns/iter 1.14
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 22.030323220265174 ns/iter 25.209662925380957 ns/iter 0.87
JSON_String_Fast_Hash/10 1.770512738235837 ns/iter 1.5562441377560323 ns/iter 1.14
JSON_String_Fast_Hash/100 1.7602615610386056 ns/iter 1.557780227692358 ns/iter 1.13
JSON_String_Key_Hash/10 1.0856941971585932 ns/iter 1.2463074630151498 ns/iter 0.87
JSON_String_Key_Hash/100 15.082772718404788 ns/iter 12.438995331234219 ns/iter 1.21
JSON_Object_Defines_Miss_Same_Length 3.869944389515343 ns/iter 3.423503433143671 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Small 3.521150042303189 ns/iter 3.1183798199938737 ns/iter 1.13
JSON_Object_Defines_Miss_Too_Large 4.2400382959942755 ns/iter 3.7395606926091354 ns/iter 1.13
Regex_Lower_S_Or_Upper_S_Asterisk 0.7037450468420576 ns/iter 0.6226677457025072 ns/iter 1.13
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.7042377025784348 ns/iter 0.6228361250909996 ns/iter 1.13
Regex_Period_Asterisk 1.0558248597620303 ns/iter 0.9342106885186939 ns/iter 1.13
Regex_Group_Period_Asterisk_Group 1.0556331952899007 ns/iter 0.9337839321180059 ns/iter 1.13
Regex_Period_Plus 0.7042255369709887 ns/iter 0.6227471554477948 ns/iter 1.13
Regex_Period 0.7033473667934838 ns/iter 0.6225039041674212 ns/iter 1.13
Regex_Caret_Period_Plus_Dollar 1.0555572589229107 ns/iter 0.9350953851702016 ns/iter 1.13
Regex_Caret_Group_Period_Plus_Group_Dollar 1.055329868046366 ns/iter 0.9379392073294155 ns/iter 1.13
Regex_Caret_Period_Asterisk_Dollar 0.7034256457979582 ns/iter 0.6227232734745292 ns/iter 1.13
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.7033394295699087 ns/iter 0.6226052568850392 ns/iter 1.13
Regex_Caret_X_Hyphen 3.5187037617978416 ns/iter 4.050956211364134 ns/iter 0.87
Regex_Period_Md_Dollar 34.87034981687018 ns/iter 30.81870904230188 ns/iter 1.13
Regex_Caret_Slash_Period_Asterisk 4.643005179156377 ns/iter 4.6688534518999 ns/iter 0.99
Regex_Caret_Period_Range_Dollar 0.8394629537148927 ns/iter 0.7792691276052113 ns/iter 1.08
Regex_Nested_Backtrack 45.804881261968795 ns/iter 38.94860405419013 ns/iter 1.18

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

Details
Benchmark suite Current: 15141f2 Previous: 34aaf42 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.2016415460166576 ns/iter 2.4638336237410576 ns/iter 0.89
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.181887395725688 ns/iter 2.4663536634604015 ns/iter 0.88
Regex_Period_Asterisk 2.1787954810947308 ns/iter 2.4629030256573996 ns/iter 0.88
Regex_Group_Period_Asterisk_Group 2.2085162850744036 ns/iter 2.463727879203569 ns/iter 0.90
Regex_Period_Plus 2.490905866335293 ns/iter 3.5167535669039545 ns/iter 0.71
Regex_Period 2.80191744632997 ns/iter 3.8700109668725258 ns/iter 0.72
Regex_Caret_Period_Plus_Dollar 2.4894330835016136 ns/iter 3.5159414883416513 ns/iter 0.71
Regex_Caret_Group_Period_Plus_Group_Dollar 2.802301125206631 ns/iter 3.868252565348381 ns/iter 0.72
Regex_Caret_Period_Asterisk_Dollar 3.11111645968079 ns/iter 2.462365701570194 ns/iter 1.26
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.4260324394846444 ns/iter 2.8139753386996564 ns/iter 1.22
Regex_Caret_X_Hyphen 6.5444930652591085 ns/iter 7.034370012268271 ns/iter 0.93
Regex_Period_Md_Dollar 27.6969672131649 ns/iter 26.973919511120997 ns/iter 1.03
Regex_Caret_Slash_Period_Asterisk 6.846147147244532 ns/iter 7.38502214578492 ns/iter 0.93
Regex_Caret_Period_Range_Dollar 4.046385889448298 ns/iter 4.220750175463874 ns/iter 0.96
Regex_Nested_Backtrack 37.07293503064315 ns/iter 36.60527041647199 ns/iter 1.01
JSON_Array_Of_Objects_Unique 417.76789337183783 ns/iter 439.7142279550653 ns/iter 0.95
JSON_Parse_1 6011.389355556986 ns/iter 5849.886472059759 ns/iter 1.03
JSON_Parse_Real 10518.4159393069 ns/iter 10445.789389186264 ns/iter 1.01
JSON_Parse_Decimal 11198.041866948528 ns/iter 11468.401964285542 ns/iter 0.98
JSON_Parse_Schema_ISO_Language 3596247.056410471 ns/iter 3690792.163157958 ns/iter 0.97
JSON_Fast_Hash_Helm_Chart_Lock 61.07926484130379 ns/iter 73.51126263762835 ns/iter 0.83
JSON_Equality_Helm_Chart_Lock 161.70090233690425 ns/iter 169.65415791089745 ns/iter 0.95
JSON_Divisible_By_Decimal 244.42997544285805 ns/iter 244.86389864971184 ns/iter 1.00
JSON_String_Equal/10 6.229428445667026 ns/iter 5.991775394140684 ns/iter 1.04
JSON_String_Equal/100 6.858017847560895 ns/iter 6.690403384229683 ns/iter 1.03
JSON_String_Equal_Small_By_Perfect_Hash/10 0.9372837702438307 ns/iter 1.0551512847080624 ns/iter 0.89
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.899267272986087 ns/iter 12.350462461835118 ns/iter 1.21
JSON_String_Fast_Hash/10 2.800768707929317 ns/iter 2.8166616099196906 ns/iter 0.99
JSON_String_Fast_Hash/100 2.803014124839705 ns/iter 2.814633365570097 ns/iter 1.00
JSON_String_Key_Hash/10 2.682908593923241 ns/iter 2.462540922012255 ns/iter 1.09
JSON_String_Key_Hash/100 9.019999131775165 ns/iter 8.087459220638259 ns/iter 1.12
JSON_Object_Defines_Miss_Same_Length 3.7425746816852192 ns/iter 4.220281160336834 ns/iter 0.89
JSON_Object_Defines_Miss_Too_Small 3.7397443279018217 ns/iter 4.22185011403151 ns/iter 0.89
JSON_Object_Defines_Miss_Too_Large 3.7387250847009295 ns/iter 4.221858300371276 ns/iter 0.89
Pointer_Object_Traverse 24.16950359552267 ns/iter 27.22302401931262 ns/iter 0.89
Pointer_Object_Try_Traverse 26.074533560158734 ns/iter 30.193071242080006 ns/iter 0.86
Pointer_Push_Back_Pointer_To_Weak_Pointer 227.97356064415365 ns/iter 198.35296699125306 ns/iter 1.15
Pointer_Walker_Schema_ISO_Language 2991309.0000000894 ns/iter 3157823.0807176805 ns/iter 0.95
Pointer_Maybe_Tracked_Deeply_Nested/0 1418404.620967783 ns/iter 1428474.5413223708 ns/iter 0.99
Pointer_Maybe_Tracked_Deeply_Nested/1 1943544.1960785044 ns/iter 1774544.2222221904 ns/iter 1.10
Pointer_Position_Tracker_Get_Deeply_Nested 631.3081231952582 ns/iter 711.084226267753 ns/iter 0.89
URITemplateRouter_Create 32170.554526697848 ns/iter 30500.123802091053 ns/iter 1.05
URITemplateRouter_Match 177.40484368672952 ns/iter 182.37465112644279 ns/iter 0.97
URITemplateRouter_Match_BasePath 205.46604649451166 ns/iter 220.40620515376344 ns/iter 0.93
URITemplateRouterView_Restore 7689.374543958749 ns/iter 8709.839989239823 ns/iter 0.88
URITemplateRouterView_Match 145.3681309704864 ns/iter 142.88015033791757 ns/iter 1.02
URITemplateRouterView_Match_BasePath 163.16021259413347 ns/iter 164.06502625435766 ns/iter 0.99
URITemplateRouterView_Arguments 456.71445521269965 ns/iter 468.317100555556 ns/iter 0.98
JSONL_Parse_Large 10835116.000000866 ns/iter 9956251.542856924 ns/iter 1.09
JSONL_Parse_Large_GZIP 12027637.99999855 ns/iter 11272418.064516116 ns/iter 1.07
HTML_Build_Table_100000 66900338.90909448 ns/iter 84437400.24999613 ns/iter 0.79
HTML_Render_Table_100000 5315585.395348619 ns/iter 5118168.20000006 ns/iter 1.04
GZIP_Compress_ISO_Language_Set_3_Locations 34626686.0500009 ns/iter 36359866.526317164 ns/iter 0.95
GZIP_Decompress_ISO_Language_Set_3_Locations 4585762.868420542 ns/iter 4654099.119205656 ns/iter 0.99
GZIP_Compress_ISO_Language_Set_3_Schema 1910601.861035371 ns/iter 2114196.196969708 ns/iter 0.90
GZIP_Decompress_ISO_Language_Set_3_Schema 372514.709351757 ns/iter 289523.38838173327 ns/iter 1.29

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: 15141f2 Previous: 34aaf42 Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 8.874867187500206 ns/iter 7.556757812499727 ns/iter 1.17
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 8.848618303571547 ns/iter 7.505568749999319 ns/iter 1.18
Regex_Period_Asterisk 8.867892857143797 ns/iter 7.506770089285655 ns/iter 1.18
Regex_Group_Period_Asterisk_Group 8.869570942547472 ns/iter 7.508362723213884 ns/iter 1.18
Regex_Period_Plus 11.284090625000687 ns/iter 9.711862456642885 ns/iter 1.16
Regex_Period 11.360749999999697 ns/iter 9.675583885375598 ns/iter 1.17
Regex_Caret_Period_Plus_Dollar 13.5918171874998 ns/iter 9.712307812499432 ns/iter 1.40
Regex_Caret_Group_Period_Plus_Group_Dollar 11.550955357143216 ns/iter 9.721990135170026 ns/iter 1.19
Regex_Caret_Period_Asterisk_Dollar 8.876440848214326 ns/iter 7.628424107143213 ns/iter 1.16
Regex_Caret_Group_Period_Asterisk_Group_Dollar 8.99209151785715 ns/iter 7.546667410714493 ns/iter 1.19
Regex_Caret_X_Hyphen 13.750567572540124 ns/iter 11.609578125000297 ns/iter 1.18
Regex_Period_Md_Dollar 40.45679563112219 ns/iter 38.39912388393176 ns/iter 1.05
Regex_Caret_Slash_Period_Asterisk 13.114625000000046 ns/iter 11.305556249999071 ns/iter 1.16
Regex_Caret_Period_Range_Dollar 11.292779687499532 ns/iter 9.690320046026631 ns/iter 1.17
Regex_Nested_Backtrack 50.279520000003686 ns/iter 48.191374900504904 ns/iter 1.04
JSON_Array_Of_Objects_Unique 505.7141071428565 ns/iter 481.87778613343704 ns/iter 1.05
JSON_Parse_1 7983.87834821414 ns/iter 8398.064732143392 ns/iter 0.95
JSON_Parse_Real 14003.654224757202 ns/iter 15880.779017857705 ns/iter 0.88
JSON_Parse_Decimal 14523.919642857358 ns/iter 15953.063078549661 ns/iter 0.91
JSON_Parse_Schema_ISO_Language 6810077.678571654 ns/iter 5911978.999999974 ns/iter 1.15
JSON_Fast_Hash_Helm_Chart_Lock 70.93301339285826 ns/iter 67.59868303570623 ns/iter 1.05
JSON_Equality_Helm_Chart_Lock 274.5748671685257 ns/iter 259.24921428570866 ns/iter 1.06
JSON_Divisible_By_Decimal 266.62153274014497 ns/iter 251.06649999997896 ns/iter 1.06
JSON_String_Equal/10 12.105823606671429 ns/iter 13.062875000000775 ns/iter 0.93
JSON_String_Equal/100 13.245121428570071 ns/iter 13.271016071430251 ns/iter 1.00
JSON_String_Equal_Small_By_Perfect_Hash/10 1.9251593749999072 ns/iter 1.8894253137653771 ns/iter 1.02
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 11.380704687500298 ns/iter 12.910380357143124 ns/iter 0.88
JSON_String_Fast_Hash/10 4.3966649310734 ns/iter 3.7753376718299143 ns/iter 1.16
JSON_String_Fast_Hash/100 4.243709163686718 ns/iter 3.8158671360429413 ns/iter 1.11
JSON_String_Key_Hash/10 4.255618257028978 ns/iter 3.7622619584071 ns/iter 1.13
JSON_String_Key_Hash/100 16.968445198872097 ns/iter 14.441673149814045 ns/iter 1.17
JSON_Object_Defines_Miss_Same_Length 3.9494580427668677 ns/iter 3.767383570584741 ns/iter 1.05
JSON_Object_Defines_Miss_Too_Small 4.001759248217514 ns/iter 3.770665736607194 ns/iter 1.06
JSON_Object_Defines_Miss_Too_Large 5.033986607142334 ns/iter 5.033411607142974 ns/iter 1.00
Pointer_Object_Traverse 42.12507351925593 ns/iter 39.563822544641525 ns/iter 1.06
Pointer_Object_Try_Traverse 53.4431799999993 ns/iter 52.170669999998154 ns/iter 1.02
Pointer_Push_Back_Pointer_To_Weak_Pointer 153.8806471481839 ns/iter 165.3926562499868 ns/iter 0.93
Pointer_Walker_Schema_ISO_Language 15637437.99999884 ns/iter 11532396.42857175 ns/iter 1.36
Pointer_Maybe_Tracked_Deeply_Nested/0 2049848.4949830922 ns/iter 1984043.928571363 ns/iter 1.03
Pointer_Maybe_Tracked_Deeply_Nested/1 3148832.5892853807 ns/iter 3137611.1607147753 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 668.7883621481385 ns/iter 621.0687385563201 ns/iter 1.08
URITemplateRouter_Create 36981.22354957755 ns/iter 39986.95023303119 ns/iter 0.92
URITemplateRouter_Match 211.06168749998488 ns/iter 211.0104481691899 ns/iter 1.00
URITemplateRouter_Match_BasePath 245.6794642856965 ns/iter 240.99700435300431 ns/iter 1.02
URITemplateRouterView_Restore 23949.29520875868 ns/iter 32076.09821428394 ns/iter 0.75
URITemplateRouterView_Match 158.03535714284627 ns/iter 157.25758928571818 ns/iter 1.00
URITemplateRouterView_Match_BasePath 181.84991802231255 ns/iter 179.63227095752313 ns/iter 1.01
URITemplateRouterView_Arguments 443.05787500000804 ns/iter 447.9554358154678 ns/iter 0.99
JSONL_Parse_Large 26494819.230772637 ns/iter 30148950.000002135 ns/iter 0.88
JSONL_Parse_Large_GZIP 26170015.38461549 ns/iter 29988079.999998264 ns/iter 0.87
HTML_Build_Table_100000 93320311.11110458 ns/iter 86540357.14286172 ns/iter 1.08
HTML_Render_Table_100000 8597725.333332468 ns/iter 7833207.7777771605 ns/iter 1.10
GZIP_Compress_ISO_Language_Set_3_Locations 44209537.49999512 ns/iter 40834464.70588115 ns/iter 1.08
GZIP_Decompress_ISO_Language_Set_3_Locations 12006624.99999997 ns/iter 10707415.624999328 ns/iter 1.12
GZIP_Compress_ISO_Language_Set_3_Schema 2567033.3333334667 ns/iter 2287602.6755853905 ns/iter 1.12
GZIP_Decompress_ISO_Language_Set_3_Schema 695390.066964333 ns/iter 655319.7544642484 ns/iter 1.06

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

Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
@jviotti jviotti force-pushed the canonical-decomposition branch from c65b222 to 15141f2 Compare May 27, 2026 01:56
@jviotti jviotti merged commit a3cd4ae into main May 27, 2026
12 checks passed
@jviotti jviotti deleted the canonical-decomposition branch May 27, 2026 02:13
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