Skip to content

Implement an is_lexically_under_path helper#2529

Merged
jviotti merged 1 commit into
mainfrom
lexical-path
Jun 19, 2026
Merged

Implement an is_lexically_under_path helper#2529
jviotti merged 1 commit into
mainfrom
lexical-path

Conversation

@jviotti

@jviotti jviotti commented Jun 19, 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 Jun 19, 2026

Copy link
Copy Markdown
🤖 Augment PR Summary

Summary: Adds a new helper to check whether one path is under another using purely lexical (non-filesystem) comparison.

Changes:

  • Introduced is_lexically_under_path in sourcemeta/core/io.h and implemented it in io.cc via lexical normalization + component-wise prefix matching.
  • Refactored is_under_path to reuse a shared internal component-coverage helper, while preserving its weak-canonicalization (filesystem-aware) behavior.
  • Added a dedicated GTest suite covering exact match, nesting, siblings/unrelated paths, repeated separators, dot/dotdot traversal cases, empty prefix behavior, and absolute POSIX paths.

Technical Notes: is_lexically_under_path relies on path::lexically_normal() (and a trailing-separator cleanup) to ensure consistent lexical comparisons without touching the filesystem.

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

1 issue found across 4 files

Prompt for AI agents (unresolved issues)

Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.


<file name="src/lang/io/io.cc">

<violation number="1" location="src/lang/io/io.cc:159">
P2: Empty-prefix handling regressed in lexical path check. Normalizing an empty prefix turns it into ".", changing prefix semantics versus is_under_path.</violation>
</file>

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

Re-trigger cubic

Comment thread src/lang/io/io.cc
Comment on lines +159 to 160
return path_components_cover(normalize(path), normalize(prefix));
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2: Empty-prefix handling regressed in lexical path check. Normalizing an empty prefix turns it into ".", changing prefix semantics versus is_under_path.

Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/lang/io/io.cc, line 159:

<comment>Empty-prefix handling regressed in lexical path check. Normalizing an empty prefix turns it into ".", changing prefix semantics versus is_under_path.</comment>

<file context>
@@ -133,23 +150,13 @@ auto weakly_canonical(const std::filesystem::path &path)
-  return true;
+auto is_lexically_under_path(const std::filesystem::path &path,
+                             const std::filesystem::path &prefix) -> bool {
+  return path_components_cover(normalize(path), normalize(prefix));
 }
 
</file context>
Suggested change
return path_components_cover(normalize(path), normalize(prefix));
}
return path_components_cover(path.empty() ? path : normalize(path),
prefix.empty() ? prefix : normalize(prefix));

@jviotti jviotti merged commit 768e61b into main Jun 19, 2026
12 checks passed
@jviotti jviotti deleted the lexical-path branch June 19, 2026 19:30

@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: c9f1661 Previous: bb1c78e Ratio
JOSE_VerifySignature_RS256 22302.007471937635 ns/iter 22282.381482087087 ns/iter 1.00
JOSE_VerifySignature_ES512 575492.8863261536 ns/iter 575852.6680395191 ns/iter 1.00
GZIP_Compress_ISO_Language_Set_3_Locations 36358550.31578965 ns/iter 36501901.84210164 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Locations 4214691.379518008 ns/iter 4362235.314465436 ns/iter 0.97
GZIP_Compress_ISO_Language_Set_3_Schema 2018371.688760579 ns/iter 2019381.0172912253 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 376423.63973799994 ns/iter 376098.8264373987 ns/iter 1.00
HTML_Build_Table_100000 60647509.99999805 ns/iter 61167542.27272478 ns/iter 0.99
HTML_Render_Table_100000 1937036.3732591323 ns/iter 1927994.211143702 ns/iter 1.00
JSONL_Parse_Large 13257246.792453822 ns/iter 13128000.490567347 ns/iter 1.01
JSONL_Parse_Large_GZIP 14629225.58333446 ns/iter 14586844.020833211 ns/iter 1.00
URITemplateRouter_Create 30361.242530375373 ns/iter 30613.7742188484 ns/iter 0.99
URITemplateRouter_Match 158.36529273654722 ns/iter 158.21572292569553 ns/iter 1.00
URITemplateRouter_Match_BasePath 184.51043101725068 ns/iter 184.1977179540609 ns/iter 1.00
URITemplateRouterView_Restore 7631.592118785585 ns/iter 8202.918226379377 ns/iter 0.93
URITemplateRouterView_Match 123.69476372631843 ns/iter 123.3310342260746 ns/iter 1.00
URITemplateRouterView_Match_BasePath 147.23507067681166 ns/iter 146.70449725965798 ns/iter 1.00
URITemplateRouterView_Arguments 474.8337684735547 ns/iter 471.4930615082236 ns/iter 1.01
Pointer_Object_Traverse 30.261473063797627 ns/iter 30.28092164154372 ns/iter 1.00
Pointer_Object_Try_Traverse 23.080376056275046 ns/iter 23.139954888339204 ns/iter 1.00
Pointer_Push_Back_Pointer_To_Weak_Pointer 157.43233801941676 ns/iter 166.97523150998956 ns/iter 0.94
Pointer_Walker_Schema_ISO_Language 1878750.1313672643 ns/iter 1883601.8690807978 ns/iter 1.00
Pointer_Maybe_Tracked_Deeply_Nested/0 1534537.1531727049 ns/iter 1523887.3824176022 ns/iter 1.01
Pointer_Maybe_Tracked_Deeply_Nested/1 1782109.3163263993 ns/iter 1691015.3573142528 ns/iter 1.05
Pointer_Position_Tracker_Get_Deeply_Nested 566.2138776989589 ns/iter 620.6396730427444 ns/iter 0.91
JSON_Array_Of_Objects_Unique 364.92676308358716 ns/iter 367.030240030534 ns/iter 0.99
JSON_Parse_1 7709.846971636047 ns/iter 7717.141430379707 ns/iter 1.00
JSON_Parse_Real 6702.085541719999 ns/iter 6646.901780315121 ns/iter 1.01
JSON_Parse_Decimal 11163.150188053261 ns/iter 11251.729169011838 ns/iter 0.99
JSON_Parse_Schema_ISO_Language 5192973.044444006 ns/iter 5172577.205883045 ns/iter 1.00
JSON_Parse_Integer 4853.600261842865 ns/iter 4901.894353107162 ns/iter 0.99
JSON_Parse_String_NonSSO_Plain 8569.736428440316 ns/iter 8507.098566329474 ns/iter 1.01
JSON_Parse_String_SSO_Plain 4026.04965442492 ns/iter 3864.3285198758754 ns/iter 1.04
JSON_Parse_String_Escape_Heavy 20731.384455402793 ns/iter 20610.20222503501 ns/iter 1.01
JSON_Parse_Object_Short_Keys 11317.490241883603 ns/iter 11438.163219666816 ns/iter 0.99
JSON_Parse_Object_Scalar_Properties 5872.90950347498 ns/iter 5966.076985904407 ns/iter 0.98
JSON_Parse_Object_Array_Properties 8787.46097324286 ns/iter 8721.862499375764 ns/iter 1.01
JSON_Parse_Object_Object_Properties 9471.72009926245 ns/iter 9535.900376556801 ns/iter 0.99
JSON_Parse_Nested_Containers 72452.46476407367 ns/iter 72004.49415264637 ns/iter 1.01
JSON_From_String_Copy 18.393408236177862 ns/iter 18.318374350082696 ns/iter 1.00
JSON_From_String_Temporary 15.426095450185022 ns/iter 15.123963823226056 ns/iter 1.02
JSON_Number_To_Double 20.903427285937465 ns/iter 20.894543382099112 ns/iter 1.00
JSON_Object_At_Last_Key/8 5.940836882774097 ns/iter 5.925501901678487 ns/iter 1.00
JSON_Object_At_Last_Key/32 21.809290248627587 ns/iter 21.89327238317286 ns/iter 1.00
JSON_Object_At_Last_Key/128 87.59968299713542 ns/iter 87.68299362837236 ns/iter 1.00
JSON_Object_At_Last_Key/512 424.7778299705281 ns/iter 435.8931792627971 ns/iter 0.97
JSON_Fast_Hash_Helm_Chart_Lock 58.964702806667134 ns/iter 61.080347314562644 ns/iter 0.97
JSON_Equality_Helm_Chart_Lock 149.7609696219964 ns/iter 155.60446239147163 ns/iter 0.96
JSON_Divisible_By_Decimal 238.2160423295346 ns/iter 241.01046479615658 ns/iter 0.99
JSON_String_Equal/10 5.647370619813995 ns/iter 5.737980508420986 ns/iter 0.98
JSON_String_Equal/100 6.267400001871407 ns/iter 6.3838041446933484 ns/iter 0.98
JSON_String_Equal_Small_By_Perfect_Hash/10 0.7399057757342771 ns/iter 0.7495034913542102 ns/iter 0.99
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 25.18935235135491 ns/iter 25.249369749595818 ns/iter 1.00
JSON_String_Fast_Hash/10 0.9405414457965072 ns/iter 0.9394891027562223 ns/iter 1.00
JSON_String_Fast_Hash/100 0.9345687511539399 ns/iter 0.938041161218053 ns/iter 1.00
JSON_String_Key_Hash/10 1.2466744244091048 ns/iter 1.2582508582266876 ns/iter 0.99
JSON_String_Key_Hash/100 12.437769255836475 ns/iter 12.45970695138817 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 3.424951715725568 ns/iter 3.4385498781892783 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Small 3.4261300569133613 ns/iter 3.4363017381970726 ns/iter 1.00
JSON_Object_Defines_Miss_Too_Large 3.1254410281454774 ns/iter 3.12664330539194 ns/iter 1.00
Regex_Lower_S_Or_Upper_S_Asterisk 0.9332417151307641 ns/iter 0.9371927428301945 ns/iter 1.00
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 0.9347627945513419 ns/iter 0.9361328100736488 ns/iter 1.00
Regex_Period_Asterisk 0.6234026242838002 ns/iter 0.6242944020307336 ns/iter 1.00
Regex_Group_Period_Asterisk_Group 0.6228757976775532 ns/iter 0.6263221134266701 ns/iter 0.99
Regex_Period_Plus 0.9341608695461294 ns/iter 0.9427431009309983 ns/iter 0.99
Regex_Period 0.9421445059056368 ns/iter 0.9401775415815484 ns/iter 1.00
Regex_Caret_Period_Plus_Dollar 0.623274348241376 ns/iter 0.6263229123331113 ns/iter 1.00
Regex_Caret_Group_Period_Plus_Group_Dollar 0.6233682429513991 ns/iter 0.6245768153733354 ns/iter 1.00
Regex_Caret_Period_Asterisk_Dollar 0.9343832190442797 ns/iter 0.9364445936912574 ns/iter 1.00
Regex_Caret_Group_Period_Asterisk_Group_Dollar 0.9350963403946039 ns/iter 0.9373981683569497 ns/iter 1.00
Regex_Caret_X_Hyphen 4.364803255286862 ns/iter 4.371867347667987 ns/iter 1.00
Regex_Period_Md_Dollar 34.1302409090125 ns/iter 28.30384416628639 ns/iter 1.21
Regex_Caret_Slash_Period_Asterisk 4.362502318130335 ns/iter 4.370966806325732 ns/iter 1.00
Regex_Caret_Period_Range_Dollar 0.9374271217520049 ns/iter 0.9339041712525836 ns/iter 1.00
Regex_Nested_Backtrack 40.03676099948302 ns/iter 36.13533294419109 ns/iter 1.11

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: c9f1661 Previous: bb1c78e Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 1.791658766789566 ns/iter 1.8180620705350259 ns/iter 0.99
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 1.7883704080291305 ns/iter 1.806621787759413 ns/iter 0.99
Regex_Period_Asterisk 1.7571797201994255 ns/iter 1.80075707929232 ns/iter 0.98
Regex_Group_Period_Asterisk_Group 1.7880218045871008 ns/iter 1.72691909832515 ns/iter 1.04
Regex_Period_Plus 2.2692362254642 ns/iter 2.198540055210018 ns/iter 1.03
Regex_Period 2.1320379704118433 ns/iter 2.080468712731953 ns/iter 1.02
Regex_Caret_Period_Plus_Dollar 2.021619355449999 ns/iter 2.1097275825589943 ns/iter 0.96
Regex_Caret_Group_Period_Plus_Group_Dollar 2.1620294887130584 ns/iter 2.3272913366345453 ns/iter 0.93
Regex_Caret_Period_Asterisk_Dollar 2.0597316656383704 ns/iter 1.954926056021731 ns/iter 1.05
Regex_Caret_Group_Period_Asterisk_Group_Dollar 1.840558159410922 ns/iter 2.0633966348886026 ns/iter 0.89
Regex_Caret_X_Hyphen 6.813228816856833 ns/iter 7.755572777916643 ns/iter 0.88
Regex_Period_Md_Dollar 22.902117967424086 ns/iter 19.381498337520984 ns/iter 1.18
Regex_Caret_Slash_Period_Asterisk 4.960053009779854 ns/iter 5.047590439886979 ns/iter 0.98
Regex_Caret_Period_Range_Dollar 1.9590579754049993 ns/iter 2.249680526521731 ns/iter 0.87
Regex_Nested_Backtrack 23.47019334316678 ns/iter 26.623754055050398 ns/iter 0.88
JSON_Array_Of_Objects_Unique 320.6363445167713 ns/iter 359.0396715098645 ns/iter 0.89
JSON_Parse_1 4091.33043373197 ns/iter 4306.316926728753 ns/iter 0.95
JSON_Parse_Real 5415.222903280453 ns/iter 5485.59033014864 ns/iter 0.99
JSON_Parse_Decimal 5681.959534777765 ns/iter 5740.073195987165 ns/iter 0.99
JSON_Parse_Schema_ISO_Language 4355788.574324729 ns/iter 4321248.23943625 ns/iter 1.01
JSON_Parse_Integer 2916.830867735093 ns/iter 3143.1197243676334 ns/iter 0.93
JSON_Parse_String_NonSSO_Plain 4192.099124166919 ns/iter 5017.695123539386 ns/iter 0.84
JSON_Parse_String_SSO_Plain 2482.4838545335415 ns/iter 2416.1257629495362 ns/iter 1.03
JSON_Parse_String_Escape_Heavy 15626.082010644177 ns/iter 18517.239932887493 ns/iter 0.84
JSON_Parse_Object_Short_Keys 5510.845355643708 ns/iter 5331.522446822324 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 2720.6879196138166 ns/iter 2933.4558971763236 ns/iter 0.93
JSON_Parse_Object_Array_Properties 3804.9092463181864 ns/iter 4043.904729714606 ns/iter 0.94
JSON_Parse_Object_Object_Properties 3357.102005357231 ns/iter 3785.865865852289 ns/iter 0.89
JSON_Parse_Nested_Containers 28008.470364653942 ns/iter 56453.874584510806 ns/iter 0.50
JSON_From_String_Copy 23.76500399292824 ns/iter 33.5471888775968 ns/iter 0.71
JSON_From_String_Temporary 29.219212519691034 ns/iter 24.566968847133552 ns/iter 1.19
JSON_Number_To_Double 37.33082282568274 ns/iter 62.320245799992335 ns/iter 0.60
JSON_Object_At_Last_Key/8 4.167515245864835 ns/iter 5.873626275681077 ns/iter 0.71
JSON_Object_At_Last_Key/32 14.717711395694366 ns/iter 15.71465217664645 ns/iter 0.94
JSON_Object_At_Last_Key/128 55.66082314635093 ns/iter 77.36109829283275 ns/iter 0.72
JSON_Object_At_Last_Key/512 219.13595430403322 ns/iter 272.6030842024959 ns/iter 0.80
JSON_Fast_Hash_Helm_Chart_Lock 68.0107194206791 ns/iter 81.34334283364483 ns/iter 0.84
JSON_Equality_Helm_Chart_Lock 158.564951152536 ns/iter 157.7937908859081 ns/iter 1.00
JSON_Divisible_By_Decimal 299.73647256099247 ns/iter 223.14346747812513 ns/iter 1.34
JSON_String_Equal/10 8.972639227710362 ns/iter 7.604838037462855 ns/iter 1.18
JSON_String_Equal/100 6.635547086529214 ns/iter 9.117845956224219 ns/iter 0.73
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8287049429796485 ns/iter 1.0598596532814328 ns/iter 0.78
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 3.367002729551114 ns/iter 3.7626138024295748 ns/iter 0.89
JSON_String_Fast_Hash/10 2.2731010261889555 ns/iter 2.857775575920127 ns/iter 0.80
JSON_String_Fast_Hash/100 2.112030287613177 ns/iter 2.944499580647047 ns/iter 0.72
JSON_String_Key_Hash/10 1.7070413810422573 ns/iter 1.9753818162966126 ns/iter 0.86
JSON_String_Key_Hash/100 2.2983436197970852 ns/iter 3.6210211411772897 ns/iter 0.63
JSON_Object_Defines_Miss_Same_Length 2.418534225749891 ns/iter 3.657610892198648 ns/iter 0.66
JSON_Object_Defines_Miss_Too_Small 2.2308751161617124 ns/iter 3.5874731912655737 ns/iter 0.62
JSON_Object_Defines_Miss_Too_Large 2.3526614072355483 ns/iter 5.208602883387397 ns/iter 0.45
Pointer_Object_Traverse 13.361880585804156 ns/iter 23.0432415569814 ns/iter 0.58
Pointer_Object_Try_Traverse 23.34769887478737 ns/iter 35.38201580222115 ns/iter 0.66
Pointer_Push_Back_Pointer_To_Weak_Pointer 153.21618410982117 ns/iter 342.0956467151705 ns/iter 0.45
Pointer_Walker_Schema_ISO_Language 2158608.626198006 ns/iter 5988896.4843750615 ns/iter 0.36
Pointer_Maybe_Tracked_Deeply_Nested/0 919361.1825191983 ns/iter 1825175.3535620407 ns/iter 0.50
Pointer_Maybe_Tracked_Deeply_Nested/1 1218378.993610331 ns/iter 1994902.6948640887 ns/iter 0.61
Pointer_Position_Tracker_Get_Deeply_Nested 389.18940614549604 ns/iter 461.69533057175664 ns/iter 0.84
URITemplateRouter_Create 31328.242514669502 ns/iter 29960.771008799955 ns/iter 1.05
URITemplateRouter_Match 182.61799175338814 ns/iter 163.13114981317474 ns/iter 1.12
URITemplateRouter_Match_BasePath 219.73462206475816 ns/iter 217.68920753972608 ns/iter 1.01
URITemplateRouterView_Restore 9779.440887724102 ns/iter 14181.55096099053 ns/iter 0.69
URITemplateRouterView_Match 123.3342231037266 ns/iter 157.49934665104496 ns/iter 0.78
URITemplateRouterView_Match_BasePath 140.16549690392367 ns/iter 151.2705408783415 ns/iter 0.93
URITemplateRouterView_Arguments 396.43502178442895 ns/iter 447.1140488807089 ns/iter 0.89
JSONL_Parse_Large 11876981.557377089 ns/iter 13179310.840000654 ns/iter 0.90
JSONL_Parse_Large_GZIP 12639292.444444235 ns/iter 14818136.918367544 ns/iter 0.85
HTML_Build_Table_100000 61541757.636363894 ns/iter 76600594.72728294 ns/iter 0.80
HTML_Render_Table_100000 2421065.556034293 ns/iter 3193319.07894713 ns/iter 0.76
GZIP_Compress_ISO_Language_Set_3_Locations 26397041.653843608 ns/iter 28981488.320000604 ns/iter 0.91
GZIP_Decompress_ISO_Language_Set_3_Locations 5862363.445255579 ns/iter 6066022.090000161 ns/iter 0.97
GZIP_Compress_ISO_Language_Set_3_Schema 1414997.5379745467 ns/iter 1520647.3158995584 ns/iter 0.93
GZIP_Decompress_ISO_Language_Set_3_Schema 274200.50039001316 ns/iter 271118.62960182177 ns/iter 1.01
JOSE_VerifySignature_RS256 20695.600379130396 ns/iter 21460.52918909896 ns/iter 0.96
JOSE_VerifySignature_ES512 958354.8468084869 ns/iter 984775.983516565 ns/iter 0.97

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: c9f1661 Previous: bb1c78e Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 2.3575100730340113 ns/iter 2.8319962894581754 ns/iter 0.83
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 2.045245661242806 ns/iter 2.4621201824088543 ns/iter 0.83
Regex_Period_Asterisk 2.0464207430352515 ns/iter 2.460821155964057 ns/iter 0.83
Regex_Group_Period_Asterisk_Group 2.327720471330517 ns/iter 2.813395034227263 ns/iter 0.83
Regex_Period_Plus 2.909177907605437 ns/iter 4.228280881156929 ns/iter 0.69
Regex_Period 2.675161197570724 ns/iter 3.870146553752063 ns/iter 0.69
Regex_Caret_Period_Plus_Dollar 2.63448072296916 ns/iter 3.8681822215114403 ns/iter 0.68
Regex_Caret_Group_Period_Plus_Group_Dollar 2.9037977412044844 ns/iter 4.219237896470882 ns/iter 0.69
Regex_Caret_Period_Asterisk_Dollar 3.483305208536071 ns/iter 3.1696546220113158 ns/iter 1.10
Regex_Caret_Group_Period_Asterisk_Group_Dollar 3.198759809272027 ns/iter 2.823569310535535 ns/iter 1.13
Regex_Caret_X_Hyphen 6.133849622675845 ns/iter 5.592668998949809 ns/iter 1.10
Regex_Period_Md_Dollar 26.230733915547056 ns/iter 26.384751980524275 ns/iter 0.99
Regex_Caret_Slash_Period_Asterisk 6.704887515089031 ns/iter 7.690357508787095 ns/iter 0.87
Regex_Caret_Period_Range_Dollar 3.466202745674631 ns/iter 2.4647483967630555 ns/iter 1.41
Regex_Nested_Backtrack 42.597810800142 ns/iter 37.330420770740766 ns/iter 1.14
JSON_Array_Of_Objects_Unique 385.43753793713887 ns/iter 438.76854207527504 ns/iter 0.88
JSON_Parse_1 4504.14401828964 ns/iter 4613.856424219974 ns/iter 0.98
JSON_Parse_Real 4955.455110837879 ns/iter 5133.925649780878 ns/iter 0.97
JSON_Parse_Decimal 6975.341529699407 ns/iter 7680.955675060124 ns/iter 0.91
JSON_Parse_Schema_ISO_Language 3210523.9861753685 ns/iter 3530753.105527349 ns/iter 0.91
JSON_Parse_Integer 3627.2263188252455 ns/iter 3974.451194314922 ns/iter 0.91
JSON_Parse_String_NonSSO_Plain 4785.98350630594 ns/iter 5064.920265469904 ns/iter 0.94
JSON_Parse_String_SSO_Plain 2600.4110384140363 ns/iter 2751.9288313283478 ns/iter 0.94
JSON_Parse_String_Escape_Heavy 13134.700920535588 ns/iter 14183.590999271935 ns/iter 0.93
JSON_Parse_Object_Short_Keys 7811.0901404701735 ns/iter 7818.5238656654465 ns/iter 1.00
JSON_Parse_Object_Scalar_Properties 4018.118645290177 ns/iter 4007.3154625379216 ns/iter 1.00
JSON_Parse_Object_Array_Properties 5129.756006869358 ns/iter 5609.380373839248 ns/iter 0.91
JSON_Parse_Object_Object_Properties 5029.292770832483 ns/iter 5574.273434516909 ns/iter 0.90
JSON_Parse_Nested_Containers 41816.070084241896 ns/iter 44384.75751808495 ns/iter 0.94
JSON_From_String_Copy 19.25192785191652 ns/iter 23.0454990488031 ns/iter 0.84
JSON_From_String_Temporary 17.117107565211953 ns/iter 20.751908187605874 ns/iter 0.82
JSON_Number_To_Double 22.394582682595715 ns/iter 22.893482894728816 ns/iter 0.98
JSON_Object_At_Last_Key/8 3.4738087701537332 ns/iter 3.8816181769396416 ns/iter 0.89
JSON_Object_At_Last_Key/32 11.160288578480401 ns/iter 13.024228960667472 ns/iter 0.86
JSON_Object_At_Last_Key/128 45.07603732850764 ns/iter 47.54487340137226 ns/iter 0.95
JSON_Object_At_Last_Key/512 358.3200909811008 ns/iter 366.0766302926261 ns/iter 0.98
JSON_Fast_Hash_Helm_Chart_Lock 56.63216118995925 ns/iter 72.76734735127282 ns/iter 0.78
JSON_Equality_Helm_Chart_Lock 143.7593276416506 ns/iter 159.7428305109808 ns/iter 0.90
JSON_Divisible_By_Decimal 226.43330325564315 ns/iter 247.7144051099029 ns/iter 0.91
JSON_String_Equal/10 5.807715236800131 ns/iter 5.98060505857788 ns/iter 0.97
JSON_String_Equal/100 6.416904596026281 ns/iter 6.6864728830973785 ns/iter 0.96
JSON_String_Equal_Small_By_Perfect_Hash/10 0.8715225976671397 ns/iter 1.054278410281673 ns/iter 0.83
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 9.881666009387038 ns/iter 12.36944637462375 ns/iter 0.80
JSON_String_Fast_Hash/10 2.3241771860417515 ns/iter 2.4628835723800964 ns/iter 0.94
JSON_String_Fast_Hash/100 2.3223485215822515 ns/iter 2.461486255873947 ns/iter 0.94
JSON_String_Key_Hash/10 2.0356040632583796 ns/iter 2.4629289418460236 ns/iter 0.83
JSON_String_Key_Hash/100 6.099913341111738 ns/iter 7.731667076437751 ns/iter 0.79
JSON_Object_Defines_Miss_Same_Length 2.5597579867102582 ns/iter 2.9052057742795077 ns/iter 0.88
JSON_Object_Defines_Miss_Too_Small 3.498005865240753 ns/iter 4.253615928834659 ns/iter 0.82
JSON_Object_Defines_Miss_Too_Large 2.617183185735623 ns/iter 2.9417170062757703 ns/iter 0.89
Pointer_Object_Traverse 22.722926269525594 ns/iter 26.229512566784443 ns/iter 0.87
Pointer_Object_Try_Traverse 27.429571328574795 ns/iter 30.617682268292672 ns/iter 0.90
Pointer_Push_Back_Pointer_To_Weak_Pointer 146.23511643512262 ns/iter 200.9566295762237 ns/iter 0.73
Pointer_Walker_Schema_ISO_Language 1597769.2782806577 ns/iter 1783467.1170482577 ns/iter 0.90
Pointer_Maybe_Tracked_Deeply_Nested/0 1138913.4820845886 ns/iter 1248012.342293919 ns/iter 0.91
Pointer_Maybe_Tracked_Deeply_Nested/1 1572811.8445945522 ns/iter 1569882.018058694 ns/iter 1.00
Pointer_Position_Tracker_Get_Deeply_Nested 637.4889361490573 ns/iter 742.2545628960272 ns/iter 0.86
URITemplateRouter_Create 29577.698931995565 ns/iter 31447.6630249808 ns/iter 0.94
URITemplateRouter_Match 170.3272766309409 ns/iter 180.03441895987288 ns/iter 0.95
URITemplateRouter_Match_BasePath 198.71001223330927 ns/iter 212.73860469084946 ns/iter 0.93
URITemplateRouterView_Restore 7108.531986330457 ns/iter 8785.874440507314 ns/iter 0.81
URITemplateRouterView_Match 133.33348283788015 ns/iter 167.7466539719021 ns/iter 0.79
URITemplateRouterView_Match_BasePath 151.9385569657416 ns/iter 197.04309534833868 ns/iter 0.77
URITemplateRouterView_Arguments 415.99956814002906 ns/iter 453.50933146439985 ns/iter 0.92
JSONL_Parse_Large 9132093.44736886 ns/iter 9170870.552631976 ns/iter 1.00
JSONL_Parse_Large_GZIP 10605884.88059605 ns/iter 10899185.718750814 ns/iter 0.97
HTML_Build_Table_100000 63846792.36364057 ns/iter 73428385.44443314 ns/iter 0.87
HTML_Render_Table_100000 4963439.71631193 ns/iter 5331617.623077224 ns/iter 0.93
GZIP_Compress_ISO_Language_Set_3_Locations 30412229.173911642 ns/iter 35984564.10525997 ns/iter 0.85
GZIP_Decompress_ISO_Language_Set_3_Locations 3797163.6864866116 ns/iter 4287656.846625736 ns/iter 0.89
GZIP_Compress_ISO_Language_Set_3_Schema 1759058.9236640593 ns/iter 2132145.9176828917 ns/iter 0.83
GZIP_Decompress_ISO_Language_Set_3_Schema 330724.4133207365 ns/iter 277537.871876239 ns/iter 1.19
JOSE_VerifySignature_RS256 52957.997872014814 ns/iter 63897.45558502758 ns/iter 0.83
JOSE_VerifySignature_ES512 2266117.3311687494 ns/iter 2676920.9580149557 ns/iter 0.85

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: c9f1661 Previous: bb1c78e Ratio
Regex_Lower_S_Or_Upper_S_Asterisk 5.199241999998776 ns/iter 5.072665999998662 ns/iter 1.02
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar 5.030130000000099 ns/iter 5.017592000001514 ns/iter 1.00
Regex_Period_Asterisk 5.16563799999858 ns/iter 5.031993000000057 ns/iter 1.03
Regex_Group_Period_Asterisk_Group 5.165468000000146 ns/iter 5.015750871654261 ns/iter 1.03
Regex_Period_Plus 4.852437999998074 ns/iter 4.983019577003822 ns/iter 0.97
Regex_Period 5.064827999999579 ns/iter 4.930249999998995 ns/iter 1.03
Regex_Caret_Period_Plus_Dollar 4.983265224325078 ns/iter 4.851023237688983 ns/iter 1.03
Regex_Caret_Group_Period_Plus_Group_Dollar 4.9992517857130485 ns/iter 4.853261050191541 ns/iter 1.03
Regex_Caret_Period_Asterisk_Dollar 5.109491999996862 ns/iter 5.038029000002098 ns/iter 1.01
Regex_Caret_Group_Period_Asterisk_Group_Dollar 5.090989000000263 ns/iter 5.045608000000357 ns/iter 1.01
Regex_Caret_X_Hyphen 8.434690848214846 ns/iter 8.20189397321615 ns/iter 1.03
Regex_Period_Md_Dollar 46.75744400215078 ns/iter 44.597200690685874 ns/iter 1.05
Regex_Caret_Slash_Period_Asterisk 7.945026785713643 ns/iter 7.844130580357346 ns/iter 1.01
Regex_Caret_Period_Range_Dollar 6.151854464284107 ns/iter 5.960803999998916 ns/iter 1.03
Regex_Nested_Backtrack 55.49144999999954 ns/iter 53.90966964284871 ns/iter 1.03
JSON_Array_Of_Objects_Unique 506.36819999999716 ns/iter 500.15904021412905 ns/iter 1.01
JSON_Parse_1 8878.234025743652 ns/iter 9292.43976589304 ns/iter 0.96
JSON_Parse_Real 16604.996685249174 ns/iter 16050.950892854133 ns/iter 1.03
JSON_Parse_Decimal 12107.142187502974 ns/iter 11861.937500000862 ns/iter 1.02
JSON_Parse_Schema_ISO_Language 7544907.142857937 ns/iter 7567616.0714286715 ns/iter 1.00
JSON_Parse_Integer 6402.016071429476 ns/iter 6147.585714286054 ns/iter 1.04
JSON_Parse_String_NonSSO_Plain 7719.848214285158 ns/iter 7680.629464285207 ns/iter 1.01
JSON_Parse_String_SSO_Plain 3907.325344060107 ns/iter 3707.3204540437846 ns/iter 1.05
JSON_Parse_String_Escape_Heavy 21996.04999999849 ns/iter 21884.931249999794 ns/iter 1.01
JSON_Parse_Object_Short_Keys 13583.81011692325 ns/iter 13174.358150188073 ns/iter 1.03
JSON_Parse_Object_Scalar_Properties 6878.574999997713 ns/iter 6774.594642856917 ns/iter 1.02
JSON_Parse_Object_Array_Properties 11436.475000003555 ns/iter 11354.83593749953 ns/iter 1.01
JSON_Parse_Object_Object_Properties 11749.041071433501 ns/iter 11528.728125000498 ns/iter 1.02
JSON_Parse_Nested_Containers 85660.42410715268 ns/iter 79742.94642857213 ns/iter 1.07
JSON_From_String_Copy 67.02861607144379 ns/iter 64.36408035714943 ns/iter 1.04
JSON_From_String_Temporary 59.44566964286325 ns/iter 59.43376785714755 ns/iter 1.00
JSON_Number_To_Double 125.86112499994735 ns/iter 119.4177031250021 ns/iter 1.05
JSON_Object_At_Last_Key/8 7.298030357142286 ns/iter 7.286299107143179 ns/iter 1.00
JSON_Object_At_Last_Key/32 23.872523171068476 ns/iter 23.93019950971027 ns/iter 1.00
JSON_Object_At_Last_Key/128 93.5941163574504 ns/iter 89.81616563321461 ns/iter 1.04
JSON_Object_At_Last_Key/512 439.1886875001205 ns/iter 427.70236593568353 ns/iter 1.03
JSON_Fast_Hash_Helm_Chart_Lock 65.9816785714286 ns/iter 64.51671428570599 ns/iter 1.02
JSON_Equality_Helm_Chart_Lock 310.66803571430256 ns/iter 300.4758928571708 ns/iter 1.03
JSON_Divisible_By_Decimal 303.4521469360523 ns/iter 296.2932615743964 ns/iter 1.02
JSON_String_Equal/10 15.37508035714349 ns/iter 15.10116020044033 ns/iter 1.02
JSON_String_Equal/100 16.74560926286165 ns/iter 16.44734821428224 ns/iter 1.02
JSON_String_Equal_Small_By_Perfect_Hash/10 2.5701721874995087 ns/iter 2.5204717857142054 ns/iter 1.02
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 14.489730738885841 ns/iter 14.223736607143728 ns/iter 1.02
JSON_String_Fast_Hash/10 4.893149341278199 ns/iter 4.716379443016644 ns/iter 1.04
JSON_String_Fast_Hash/100 4.718189621589571 ns/iter 4.71902679624771 ns/iter 1.00
JSON_String_Key_Hash/10 5.496972999999343 ns/iter 5.354588999998668 ns/iter 1.03
JSON_String_Key_Hash/100 11.935383928573627 ns/iter 11.910584375002031 ns/iter 1.00
JSON_Object_Defines_Miss_Same_Length 4.155952596706394 ns/iter 4.095077944601314 ns/iter 1.01
JSON_Object_Defines_Miss_Too_Small 5.124691071427736 ns/iter 5.048899000000802 ns/iter 1.02
JSON_Object_Defines_Miss_Too_Large 4.488473047015688 ns/iter 4.418720279328418 ns/iter 1.02
Pointer_Object_Traverse 71.32588169643635 ns/iter 69.96568750001383 ns/iter 1.02
Pointer_Object_Try_Traverse 74.71177455354702 ns/iter 70.92142857142595 ns/iter 1.05
Pointer_Push_Back_Pointer_To_Weak_Pointer 197.0830622395217 ns/iter 195.1875174274883 ns/iter 1.01
Pointer_Walker_Schema_ISO_Language 6511353.571430131 ns/iter 7275169.642856635 ns/iter 0.90
Pointer_Maybe_Tracked_Deeply_Nested/0 2367299.68750069 ns/iter 2442561.7857137434 ns/iter 0.97
Pointer_Maybe_Tracked_Deeply_Nested/1 3632501.025640522 ns/iter 3660186.6666667494 ns/iter 0.99
Pointer_Position_Tracker_Get_Deeply_Nested 547.3556702822251 ns/iter 509.630347565224 ns/iter 1.07
URITemplateRouter_Create 41985.13725263277 ns/iter 40884.29574603956 ns/iter 1.03
URITemplateRouter_Match 192.7907850705188 ns/iter 190.34793569869862 ns/iter 1.01
URITemplateRouter_Match_BasePath 219.2569062499672 ns/iter 219.72446874997334 ns/iter 1.00
URITemplateRouterView_Restore 32597.311166728992 ns/iter 33551.59595364034 ns/iter 0.97
URITemplateRouterView_Match 159.41832589285403 ns/iter 157.6761830357043 ns/iter 1.01
URITemplateRouterView_Match_BasePath 177.8139265905192 ns/iter 175.50208987740115 ns/iter 1.01
URITemplateRouterView_Arguments 534.7557999998571 ns/iter 526.0177000000112 ns/iter 1.02
JSONL_Parse_Large 32962494.999992482 ns/iter 33377266.666667268 ns/iter 0.99
JSONL_Parse_Large_GZIP 33819679.99998778 ns/iter 33510028.57142963 ns/iter 1.01
HTML_Build_Table_100000 93277866.6666915 ns/iter 89189814.28571117 ns/iter 1.05
HTML_Render_Table_100000 7175322.321428114 ns/iter 8146074.444443406 ns/iter 0.88
GZIP_Compress_ISO_Language_Set_3_Locations 37447105.555555835 ns/iter 37142784.21052529 ns/iter 1.01
GZIP_Decompress_ISO_Language_Set_3_Locations 9529142.666663878 ns/iter 10153585.93750193 ns/iter 0.94
GZIP_Compress_ISO_Language_Set_3_Schema 2166782.812500401 ns/iter 2159490.9374996973 ns/iter 1.00
GZIP_Decompress_ISO_Language_Set_3_Schema 633809.1071427243 ns/iter 630567.4000000181 ns/iter 1.01
JOSE_VerifySignature_RS256 21655.85937500225 ns/iter 21312.104572362012 ns/iter 1.02
JOSE_VerifySignature_ES512 1569452.6785716382 ns/iter 1547099.3303569206 ns/iter 1.01

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant