Implement helpers for URI form percentage unescaping#2633
Conversation
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
There was a problem hiding this comment.
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/core/uri/include/sourcemeta/core/uri.h">
<violation number="1" location="src/core/uri/include/sourcemeta/core/uri.h:827">
P2: The `unescape_form` method returns a `bool` indicating whether decoding succeeded, but the return value is not marked `[[nodiscard]]`. If a caller ignores this return value, they could mistakenly use `output` after a failed decode — the function restores `output` to its original contents on failure, so the caller would see an unchanged string without realizing the input was malformed. Other `bool`-returning methods in this class (e.g., `is_absolute()`, `is_scheme()`, `is_ipv4()`) all carry `[[nodiscard]]` to catch exactly this kind of silent misuse. Consider adding `[[nodiscard]]` to the declaration.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| /// assert(sourcemeta::core::URI::unescape_form("a+b%2Fc", output)); | ||
| /// assert(output == "a b/c"); | ||
| /// ``` | ||
| static auto unescape_form(std::string_view input, std::string &output) |
There was a problem hiding this comment.
P2: The unescape_form method returns a bool indicating whether decoding succeeded, but the return value is not marked [[nodiscard]]. If a caller ignores this return value, they could mistakenly use output after a failed decode — the function restores output to its original contents on failure, so the caller would see an unchanged string without realizing the input was malformed. Other bool-returning methods in this class (e.g., is_absolute(), is_scheme(), is_ipv4()) all carry [[nodiscard]] to catch exactly this kind of silent misuse. Consider adding [[nodiscard]] to the declaration.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At src/core/uri/include/sourcemeta/core/uri.h, line 827:
<comment>The `unescape_form` method returns a `bool` indicating whether decoding succeeded, but the return value is not marked `[[nodiscard]]`. If a caller ignores this return value, they could mistakenly use `output` after a failed decode — the function restores `output` to its original contents on failure, so the caller would see an unchanged string without realizing the input was malformed. Other `bool`-returning methods in this class (e.g., `is_absolute()`, `is_scheme()`, `is_ipv4()`) all carry `[[nodiscard]]` to catch exactly this kind of silent misuse. Consider adding `[[nodiscard]]` to the declaration.</comment>
<file context>
@@ -807,6 +807,26 @@ class SOURCEMETA_CORE_URI_EXPORT URI {
+ /// assert(sourcemeta::core::URI::unescape_form("a+b%2Fc", output));
+ /// assert(output == "a b/c");
+ /// ```
+ static auto unescape_form(std::string_view input, std::string &output)
+ -> bool;
+
</file context>
| static auto unescape_form(std::string_view input, std::string &output) | |
| [[nodiscard]] static auto unescape_form(std::string_view input, std::string &output) |
There was a problem hiding this comment.
Benchmark (linux/llvm)
Details
| Benchmark suite | Current: 915a07e | Previous: c2e9865 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
2.501942190302795 ns/iter |
2.507329895571885 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
2.1926125410354804 ns/iter |
2.178696794417547 ns/iter |
1.01 |
Regex_Period_Asterisk |
2.1932232724214105 ns/iter |
2.1777364777720405 ns/iter |
1.01 |
Regex_Group_Period_Asterisk_Group |
2.4908517705131197 ns/iter |
2.489255824701675 ns/iter |
1.00 |
Regex_Period_Plus |
3.1175936479875723 ns/iter |
3.114095792348727 ns/iter |
1.00 |
Regex_Period |
2.8031566861360213 ns/iter |
2.8010255954436856 ns/iter |
1.00 |
Regex_Caret_Period_Plus_Dollar |
2.803088112560838 ns/iter |
2.716322676105609 ns/iter |
1.03 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
3.1145629683872307 ns/iter |
2.8026993953283994 ns/iter |
1.11 |
Regex_Caret_Period_Asterisk_Dollar |
3.7358263193803016 ns/iter |
2.8016800596917113 ns/iter |
1.33 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
3.427573849045745 ns/iter |
2.488513946961601 ns/iter |
1.38 |
Regex_Caret_X_Hyphen |
6.546117634983428 ns/iter |
6.529284694225702 ns/iter |
1.00 |
Regex_Period_Md_Dollar |
27.754978156477 ns/iter |
27.731215801580483 ns/iter |
1.00 |
Regex_Caret_Slash_Period_Asterisk |
7.163198902692216 ns/iter |
6.194049148903488 ns/iter |
1.16 |
Regex_Caret_Period_Range_Dollar |
4.359688849039084 ns/iter |
4.356139070168215 ns/iter |
1.00 |
Regex_Nested_Backtrack |
38.60903434089674 ns/iter |
38.45463811762341 ns/iter |
1.00 |
JSON_Array_Of_Objects_Unique |
443.46077381228184 ns/iter |
440.78753111026333 ns/iter |
1.01 |
JSON_Parse_1 |
4889.801271360601 ns/iter |
4905.537942319567 ns/iter |
1.00 |
JSON_Parse_Real |
5410.731268177646 ns/iter |
5405.967688133417 ns/iter |
1.00 |
JSON_Parse_Decimal |
7565.688513389684 ns/iter |
7485.8289988775805 ns/iter |
1.01 |
JSON_Parse_Schema_ISO_Language |
3547104.98989867 ns/iter |
3537154.252525296 ns/iter |
1.00 |
JSON_Parse_Integer |
3841.0936946260863 ns/iter |
3834.750997232639 ns/iter |
1.00 |
JSON_Parse_String_NonSSO_Plain |
5019.966450000766 ns/iter |
5137.522694007938 ns/iter |
0.98 |
JSON_Parse_String_SSO_Plain |
2703.4321657354944 ns/iter |
2769.744460551862 ns/iter |
0.98 |
JSON_Parse_String_Escape_Heavy |
14421.986584232702 ns/iter |
14140.917578778406 ns/iter |
1.02 |
JSON_Parse_Object_Short_Keys |
10794.251516737942 ns/iter |
10535.136030794742 ns/iter |
1.02 |
JSON_Parse_Object_Scalar_Properties |
4212.641866587793 ns/iter |
4103.183922067982 ns/iter |
1.03 |
JSON_Parse_Object_Array_Properties |
5451.376324224409 ns/iter |
5671.313902581027 ns/iter |
0.96 |
JSON_Parse_Object_Object_Properties |
5492.039176976866 ns/iter |
5497.690746128224 ns/iter |
1.00 |
JSON_Parse_Nested_Containers |
44894.44336962982 ns/iter |
44749.98570973356 ns/iter |
1.00 |
JSON_From_String_Copy |
20.579659390492335 ns/iter |
20.56034902915285 ns/iter |
1.00 |
JSON_From_String_Temporary |
17.76779269021811 ns/iter |
17.754248908379086 ns/iter |
1.00 |
JSON_Number_To_Double |
24.104571904691387 ns/iter |
24.030217561526015 ns/iter |
1.00 |
JSON_Object_At_Last_Key/8 |
3.8534916955101712 ns/iter |
3.844832691883154 ns/iter |
1.00 |
JSON_Object_At_Last_Key/32 |
12.443780256206296 ns/iter |
12.271961531916473 ns/iter |
1.01 |
JSON_Object_At_Last_Key/128 |
49.46820466800473 ns/iter |
49.067495464255586 ns/iter |
1.01 |
JSON_Object_At_Last_Key/512 |
393.5312313794092 ns/iter |
394.01705118965606 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
66.02966446927694 ns/iter |
65.9990623462842 ns/iter |
1.00 |
JSON_Equality_Helm_Chart_Lock |
171.54259357369557 ns/iter |
170.63443946002724 ns/iter |
1.01 |
JSON_Divisible_By_Decimal |
246.41268887386119 ns/iter |
252.4578474251214 ns/iter |
0.98 |
JSON_String_Equal/10 |
5.927187746834188 ns/iter |
5.9193716127947695 ns/iter |
1.00 |
JSON_String_Equal/100 |
6.552347747578484 ns/iter |
6.536961323915764 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9421377855164067 ns/iter |
0.932679910273291 ns/iter |
1.01 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
10.590796289448443 ns/iter |
14.920406471662755 ns/iter |
0.71 |
JSON_String_Fast_Hash/10 |
2.805877865885541 ns/iter |
2.8006948045037596 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
2.8034054012309895 ns/iter |
2.8004266407428067 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
2.192773587958368 ns/iter |
2.698623227486724 ns/iter |
0.81 |
JSON_String_Key_Hash/100 |
6.544787349466681 ns/iter |
9.02153923668944 ns/iter |
0.73 |
JSON_Object_Defines_Miss_Same_Length |
3.427200746254639 ns/iter |
3.412503525535331 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.2003074597472736 ns/iter |
3.0907754585054055 ns/iter |
1.04 |
JSON_Object_Defines_Miss_Too_Large |
2.7382306695235 ns/iter |
2.7672489416830923 ns/iter |
0.99 |
Pointer_Object_Traverse |
28.940849806426847 ns/iter |
28.58577947710266 ns/iter |
1.01 |
Pointer_Object_Try_Traverse |
31.36211370354658 ns/iter |
31.194657524608576 ns/iter |
1.01 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
178.52839511272188 ns/iter |
224.94910503505793 ns/iter |
0.79 |
Pointer_Walker_Schema_ISO_Language |
2625441.6466162 ns/iter |
2665277.269962046 ns/iter |
0.99 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1248043.6851521358 ns/iter |
1246766.0570410867 ns/iter |
1.00 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1797685.1116504825 ns/iter |
1657539.4407582993 ns/iter |
1.08 |
Pointer_Position_Tracker_Get_Deeply_Nested |
686.6691236150206 ns/iter |
665.2366354735633 ns/iter |
1.03 |
JSONPath_Descendant_Filter_Nested |
1566.6052414280227 ns/iter |
1592.3269021812666 ns/iter |
0.98 |
URITemplateRouter_Create |
31931.58321614955 ns/iter |
31934.02625211019 ns/iter |
1.00 |
URITemplateRouter_Match |
179.6900708050676 ns/iter |
187.41710418810268 ns/iter |
0.96 |
URITemplateRouter_Match_BasePath |
211.05922878162178 ns/iter |
220.79081137182288 ns/iter |
0.96 |
URITemplateRouterView_Restore |
8487.799810027276 ns/iter |
8479.97637626179 ns/iter |
1.00 |
URITemplateRouterView_Match |
164.3490417152347 ns/iter |
164.07662196901552 ns/iter |
1.00 |
URITemplateRouterView_Match_BasePath |
187.3344731337008 ns/iter |
186.57753564300455 ns/iter |
1.00 |
URITemplateRouterView_Arguments |
433.5404708460521 ns/iter |
440.0386091638861 ns/iter |
0.99 |
JSONL_Parse_Large |
9752800.944445048 ns/iter |
9595468.698630113 ns/iter |
1.02 |
JSONL_Parse_Large_GZIP |
11389994.370968878 ns/iter |
11223426.746031662 ns/iter |
1.01 |
JSONLD_Catalog_Annotation_List_Populate |
1246340.813167383 ns/iter |
1255267.2228162375 ns/iter |
0.99 |
JSONLD_Catalog_Materialize |
4186188.403614406 ns/iter |
4155154.4107141765 ns/iter |
1.01 |
HTML_Build_Table_100000 |
67451868.0999995 ns/iter |
68671175.80000013 ns/iter |
0.98 |
HTML_Render_Table_100000 |
5348635.442748 ns/iter |
5397448.511628279 ns/iter |
0.99 |
GZIP_Compress_ISO_Language_Set_3_Locations |
33463815.904762365 ns/iter |
33069552.095239054 ns/iter |
1.01 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4197629.485030327 ns/iter |
4056809.104651467 ns/iter |
1.03 |
GZIP_Compress_ISO_Language_Set_3_Schema |
1890340.132432492 ns/iter |
1884915.6657680862 ns/iter |
1.00 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
350613.7887606914 ns/iter |
351115.3432160957 ns/iter |
1.00 |
JOSE_VerifySignature_RS256 |
58202.2987132387 ns/iter |
58254.53015451145 ns/iter |
1.00 |
JOSE_VerifySignature_ES512 |
2464639.619718592 ns/iter |
2433672.4062498957 ns/iter |
1.01 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Benchmark (macos/llvm)
Details
| Benchmark suite | Current: 915a07e | Previous: c2e9865 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.768498883590161 ns/iter |
2.8426476658658393 ns/iter |
0.62 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.6992494382665226 ns/iter |
2.643929256345024 ns/iter |
0.64 |
Regex_Period_Asterisk |
1.7426538542451029 ns/iter |
2.6116871798197314 ns/iter |
0.67 |
Regex_Group_Period_Asterisk_Group |
1.7324452419089473 ns/iter |
2.1087948297485637 ns/iter |
0.82 |
Regex_Period_Plus |
2.0997802254725793 ns/iter |
2.751498232126098 ns/iter |
0.76 |
Regex_Period |
2.1918101389127678 ns/iter |
2.6661772858899795 ns/iter |
0.82 |
Regex_Caret_Period_Plus_Dollar |
2.177099130529799 ns/iter |
2.339905390438616 ns/iter |
0.93 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.2051035436564606 ns/iter |
2.3431902685590598 ns/iter |
0.94 |
Regex_Caret_Period_Asterisk_Dollar |
1.9358036858068528 ns/iter |
1.866403696688824 ns/iter |
1.04 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
1.7495811061738331 ns/iter |
1.9500187982661896 ns/iter |
0.90 |
Regex_Caret_X_Hyphen |
6.25006445820008 ns/iter |
7.755147078500423 ns/iter |
0.81 |
Regex_Period_Md_Dollar |
18.480472695204696 ns/iter |
22.144321256408364 ns/iter |
0.83 |
Regex_Caret_Slash_Period_Asterisk |
5.390323460716302 ns/iter |
6.8582553208049335 ns/iter |
0.79 |
Regex_Caret_Period_Range_Dollar |
2.448483219589357 ns/iter |
2.862165539520193 ns/iter |
0.86 |
Regex_Nested_Backtrack |
27.073605026189643 ns/iter |
39.62724285480656 ns/iter |
0.68 |
JSON_Array_Of_Objects_Unique |
387.64022481903885 ns/iter |
495.58745684946734 ns/iter |
0.78 |
JSON_Parse_1 |
7538.130868898774 ns/iter |
8377.534589243396 ns/iter |
0.90 |
JSON_Parse_Real |
8143.692679587244 ns/iter |
8971.824224373126 ns/iter |
0.91 |
JSON_Parse_Decimal |
8068.659760356272 ns/iter |
9150.109405189403 ns/iter |
0.88 |
JSON_Parse_Schema_ISO_Language |
4282314.896552154 ns/iter |
5466469.086021182 ns/iter |
0.78 |
JSON_Parse_Integer |
4884.172293866804 ns/iter |
5881.674096380462 ns/iter |
0.83 |
JSON_Parse_String_NonSSO_Plain |
7614.202097104267 ns/iter |
10266.767164271234 ns/iter |
0.74 |
JSON_Parse_String_SSO_Plain |
2851.032536270215 ns/iter |
3349.8936199055397 ns/iter |
0.85 |
JSON_Parse_String_Escape_Heavy |
21561.64714360234 ns/iter |
25195.893733415127 ns/iter |
0.86 |
JSON_Parse_Object_Short_Keys |
8906.588711760793 ns/iter |
10728.482203748865 ns/iter |
0.83 |
JSON_Parse_Object_Scalar_Properties |
4613.647396630814 ns/iter |
5926.2851418561895 ns/iter |
0.78 |
JSON_Parse_Object_Array_Properties |
7553.369278049626 ns/iter |
8911.068307006528 ns/iter |
0.85 |
JSON_Parse_Object_Object_Properties |
7757.441580682296 ns/iter |
9380.45980138424 ns/iter |
0.83 |
JSON_Parse_Nested_Containers |
62462.29402905572 ns/iter |
73968.57067171313 ns/iter |
0.84 |
JSON_From_String_Copy |
25.187562900402234 ns/iter |
27.87635592004141 ns/iter |
0.90 |
JSON_From_String_Temporary |
19.340586072146344 ns/iter |
24.132061630238578 ns/iter |
0.80 |
JSON_Number_To_Double |
37.234324339479095 ns/iter |
48.99795137692196 ns/iter |
0.76 |
JSON_Object_At_Last_Key/8 |
4.3323422393898525 ns/iter |
5.115720533879215 ns/iter |
0.85 |
JSON_Object_At_Last_Key/32 |
13.107832739300806 ns/iter |
15.177704596217708 ns/iter |
0.86 |
JSON_Object_At_Last_Key/128 |
56.44987533084733 ns/iter |
67.14898901780997 ns/iter |
0.84 |
JSON_Object_At_Last_Key/512 |
192.17750282468023 ns/iter |
267.2938577505039 ns/iter |
0.72 |
JSON_Fast_Hash_Helm_Chart_Lock |
60.16543345885684 ns/iter |
79.4818104717342 ns/iter |
0.76 |
JSON_Equality_Helm_Chart_Lock |
145.47601536286138 ns/iter |
192.276016218362 ns/iter |
0.76 |
JSON_Divisible_By_Decimal |
176.61136289245636 ns/iter |
281.630393829609 ns/iter |
0.63 |
JSON_String_Equal/10 |
7.495301151364404 ns/iter |
10.019221712187496 ns/iter |
0.75 |
JSON_String_Equal/100 |
7.176004445256733 ns/iter |
9.887759420039021 ns/iter |
0.73 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.34745455240715956 ns/iter |
0.42944982486702943 ns/iter |
0.81 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
3.731755501044223 ns/iter |
4.504096080834984 ns/iter |
0.83 |
JSON_String_Fast_Hash/10 |
2.7398537630357374 ns/iter |
2.9618875477008624 ns/iter |
0.93 |
JSON_String_Fast_Hash/100 |
2.631902712895523 ns/iter |
2.402493766446862 ns/iter |
1.10 |
JSON_String_Key_Hash/10 |
1.7302733339384269 ns/iter |
2.3104913708402797 ns/iter |
0.75 |
JSON_String_Key_Hash/100 |
2.2239192883526737 ns/iter |
2.892527792568883 ns/iter |
0.77 |
JSON_Object_Defines_Miss_Same_Length |
3.140789787829667 ns/iter |
3.3925129299498944 ns/iter |
0.93 |
JSON_Object_Defines_Miss_Too_Small |
2.7930962661488805 ns/iter |
3.5222027932761764 ns/iter |
0.79 |
JSON_Object_Defines_Miss_Too_Large |
2.846798063785398 ns/iter |
2.9856923442558805 ns/iter |
0.95 |
Pointer_Object_Traverse |
25.626754179974466 ns/iter |
33.30306036799355 ns/iter |
0.77 |
Pointer_Object_Try_Traverse |
25.703190314230216 ns/iter |
33.830795742152084 ns/iter |
0.76 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
191.0020520323461 ns/iter |
217.7173906206125 ns/iter |
0.88 |
Pointer_Walker_Schema_ISO_Language |
2949167.496031653 ns/iter |
2825294.730392474 ns/iter |
1.04 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1330716.6673268855 ns/iter |
1211338.027729634 ns/iter |
1.10 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1148262.5474210724 ns/iter |
1043338.3862274134 ns/iter |
1.10 |
Pointer_Position_Tracker_Get_Deeply_Nested |
348.26208882820396 ns/iter |
329.78097732998697 ns/iter |
1.06 |
JSONPath_Descendant_Filter_Nested |
1275.3736794903498 ns/iter |
1266.1256339639287 ns/iter |
1.01 |
URITemplateRouter_Create |
23470.21931629453 ns/iter |
27909.840521925536 ns/iter |
0.84 |
URITemplateRouter_Match |
192.45021505448975 ns/iter |
172.21977926465956 ns/iter |
1.12 |
URITemplateRouter_Match_BasePath |
302.13881298455374 ns/iter |
199.8314329904546 ns/iter |
1.51 |
URITemplateRouterView_Restore |
11878.265380048704 ns/iter |
10921.327087666597 ns/iter |
1.09 |
URITemplateRouterView_Match |
138.95360970414842 ns/iter |
157.36315265758992 ns/iter |
0.88 |
URITemplateRouterView_Match_BasePath |
152.55151791057426 ns/iter |
169.5313507517467 ns/iter |
0.90 |
URITemplateRouterView_Arguments |
538.6672013629113 ns/iter |
584.8250650756163 ns/iter |
0.92 |
JSONL_Parse_Large |
10030956.485294115 ns/iter |
19587980.33333172 ns/iter |
0.51 |
JSONL_Parse_Large_GZIP |
11526826.508196658 ns/iter |
20804677.945946153 ns/iter |
0.55 |
JSONLD_Catalog_Annotation_List_Populate |
994421.2651413968 ns/iter |
1290260.912698599 ns/iter |
0.77 |
JSONLD_Catalog_Materialize |
4943121.681159535 ns/iter |
7687353.365383842 ns/iter |
0.64 |
HTML_Build_Table_100000 |
39817507.3529434 ns/iter |
54946766.59999414 ns/iter |
0.72 |
HTML_Render_Table_100000 |
1623083.9694653999 ns/iter |
2578806.365030522 ns/iter |
0.63 |
GZIP_Compress_ISO_Language_Set_3_Locations |
27214898.148149252 ns/iter |
38222685.22222 ns/iter |
0.71 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
3192219.0814479175 ns/iter |
4611705.035971282 ns/iter |
0.69 |
GZIP_Compress_ISO_Language_Set_3_Schema |
3408210.070175418 ns/iter |
1942147.2513090877 ns/iter |
1.75 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
307963.1815273783 ns/iter |
321999.9802027535 ns/iter |
0.96 |
JOSE_VerifySignature_RS256 |
22010.90893695763 ns/iter |
24227.70032696815 ns/iter |
0.91 |
JOSE_VerifySignature_ES512 |
1199734.1065290375 ns/iter |
1282855.83272724 ns/iter |
0.94 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Benchmark (linux/gcc)
Details
| Benchmark suite | Current: 915a07e | Previous: c2e9865 | Ratio |
|---|---|---|---|
JOSE_VerifySignature_RS256 |
22441.902168705557 ns/iter |
24332.736914650617 ns/iter |
0.92 |
JOSE_VerifySignature_ES512 |
577703.9908789606 ns/iter |
669589.4454628427 ns/iter |
0.86 |
GZIP_Compress_ISO_Language_Set_3_Locations |
36415647.42104875 ns/iter |
39359847.94444873 ns/iter |
0.93 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
4442056.6751596425 ns/iter |
4065051.732558073 ns/iter |
1.09 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2022984.8294796397 ns/iter |
2267437.6363636088 ns/iter |
0.89 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
379786.20672813297 ns/iter |
278587.07594935404 ns/iter |
1.36 |
HTML_Build_Table_100000 |
64839496.000000834 ns/iter |
70184459.50000115 ns/iter |
0.92 |
HTML_Render_Table_100000 |
2039817.2005418 ns/iter |
2121222.773134425 ns/iter |
0.96 |
JSONLD_Catalog_Annotation_List_Populate |
1314857.8827976773 ns/iter |
1307068.9999999593 ns/iter |
1.01 |
JSONLD_Catalog_Materialize |
8059494.682352659 ns/iter |
7021091.4554450875 ns/iter |
1.15 |
JSONL_Parse_Large |
14145696.699999917 ns/iter |
13573306.61538579 ns/iter |
1.04 |
JSONL_Parse_Large_GZIP |
15472397.95555571 ns/iter |
15056615.978722977 ns/iter |
1.03 |
URITemplateRouter_Create |
30873.65721467448 ns/iter |
29808.719942161613 ns/iter |
1.04 |
URITemplateRouter_Match |
164.72226073557874 ns/iter |
166.39454647465786 ns/iter |
0.99 |
URITemplateRouter_Match_BasePath |
186.6809728433928 ns/iter |
192.68106335684502 ns/iter |
0.97 |
URITemplateRouterView_Restore |
8601.580712009732 ns/iter |
9908.403712137215 ns/iter |
0.87 |
URITemplateRouterView_Match |
124.84531072604223 ns/iter |
125.97983638702715 ns/iter |
0.99 |
URITemplateRouterView_Match_BasePath |
144.06575020667466 ns/iter |
144.15944448903707 ns/iter |
1.00 |
URITemplateRouterView_Arguments |
472.54541332820247 ns/iter |
461.9213585850908 ns/iter |
1.02 |
JSONPath_Descendant_Filter_Nested |
1774.901293106775 ns/iter |
1826.9056429587172 ns/iter |
0.97 |
Pointer_Object_Traverse |
30.199043981906744 ns/iter |
32.15207092258771 ns/iter |
0.94 |
Pointer_Object_Try_Traverse |
25.481207288921407 ns/iter |
26.050690592014778 ns/iter |
0.98 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
163.78698314948394 ns/iter |
156.26097442758456 ns/iter |
1.05 |
Pointer_Walker_Schema_ISO_Language |
3096676.884444302 ns/iter |
3092937.1724137757 ns/iter |
1.00 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
1862104.8679243894 ns/iter |
1898954.994565209 ns/iter |
0.98 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
1718513.507352735 ns/iter |
1644827.8289787795 ns/iter |
1.04 |
Pointer_Position_Tracker_Get_Deeply_Nested |
417.48777235001774 ns/iter |
570.642148039361 ns/iter |
0.73 |
JSON_Array_Of_Objects_Unique |
435.0218743838661 ns/iter |
403.2760678454962 ns/iter |
1.08 |
JSON_Parse_1 |
10074.131604612425 ns/iter |
9724.859487081148 ns/iter |
1.04 |
JSON_Parse_Real |
8021.633540513905 ns/iter |
7759.906138307172 ns/iter |
1.03 |
JSON_Parse_Decimal |
13120.296199213146 ns/iter |
11194.887807761566 ns/iter |
1.17 |
JSON_Parse_Schema_ISO_Language |
6762367.673076142 ns/iter |
6722445.428571129 ns/iter |
1.01 |
JSON_Parse_Integer |
5776.125828032339 ns/iter |
5717.399208548561 ns/iter |
1.01 |
JSON_Parse_String_NonSSO_Plain |
12116.471321652974 ns/iter |
11948.545437509069 ns/iter |
1.01 |
JSON_Parse_String_SSO_Plain |
5106.109989078781 ns/iter |
4657.100362307074 ns/iter |
1.10 |
JSON_Parse_String_Escape_Heavy |
25861.034678670076 ns/iter |
24620.48070422555 ns/iter |
1.05 |
JSON_Parse_Object_Short_Keys |
13668.09361768946 ns/iter |
14136.134016046388 ns/iter |
0.97 |
JSON_Parse_Object_Scalar_Properties |
7091.668660884174 ns/iter |
7150.679229694502 ns/iter |
0.99 |
JSON_Parse_Object_Array_Properties |
12493.516403852143 ns/iter |
12671.741880619913 ns/iter |
0.99 |
JSON_Parse_Object_Object_Properties |
12294.103663164673 ns/iter |
12029.569476944904 ns/iter |
1.02 |
JSON_Parse_Nested_Containers |
102971.57084249647 ns/iter |
100057.0385494057 ns/iter |
1.03 |
JSON_From_String_Copy |
18.13356407610382 ns/iter |
19.70145964848231 ns/iter |
0.92 |
JSON_From_String_Temporary |
15.40812200120132 ns/iter |
16.320591702531374 ns/iter |
0.94 |
JSON_Number_To_Double |
20.609185212212964 ns/iter |
19.457215417520878 ns/iter |
1.06 |
JSON_Object_At_Last_Key/8 |
3.818637633986932 ns/iter |
4.200811807205807 ns/iter |
0.91 |
JSON_Object_At_Last_Key/32 |
11.885105507311819 ns/iter |
13.37655502909394 ns/iter |
0.89 |
JSON_Object_At_Last_Key/128 |
48.70315788913404 ns/iter |
47.20245657082939 ns/iter |
1.03 |
JSON_Object_At_Last_Key/512 |
353.584521192826 ns/iter |
277.7874411615759 ns/iter |
1.27 |
JSON_Fast_Hash_Helm_Chart_Lock |
61.49052447588639 ns/iter |
72.91374259331519 ns/iter |
0.84 |
JSON_Equality_Helm_Chart_Lock |
159.02784980232974 ns/iter |
167.91521185602022 ns/iter |
0.95 |
JSON_Divisible_By_Decimal |
257.34161812863664 ns/iter |
247.10401790367246 ns/iter |
1.04 |
JSON_String_Equal/10 |
5.394797585606839 ns/iter |
5.318901948143523 ns/iter |
1.01 |
JSON_String_Equal/100 |
6.001440843283442 ns/iter |
6.020760030821431 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.6246380601381972 ns/iter |
0.711589413094199 ns/iter |
0.88 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
25.21241377210604 ns/iter |
22.03822800131175 ns/iter |
1.14 |
JSON_String_Fast_Hash/10 |
2.264121667305271 ns/iter |
2.464036949981108 ns/iter |
0.92 |
JSON_String_Fast_Hash/100 |
2.2639947358005004 ns/iter |
2.4644245882382667 ns/iter |
0.92 |
JSON_String_Key_Hash/10 |
1.24714335042716 ns/iter |
1.084555840899372 ns/iter |
1.15 |
JSON_String_Key_Hash/100 |
12.4465100966816 ns/iter |
14.751992989812805 ns/iter |
0.84 |
JSON_Object_Defines_Miss_Same_Length |
3.11424687429962 ns/iter |
3.1675092444209123 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Too_Small |
3.1163644846897243 ns/iter |
3.518422191255207 ns/iter |
0.89 |
JSON_Object_Defines_Miss_Too_Large |
3.1159439250734025 ns/iter |
3.169172006447286 ns/iter |
0.98 |
Regex_Lower_S_Or_Upper_S_Asterisk |
0.9429900030281383 ns/iter |
1.0565253085838553 ns/iter |
0.89 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
0.6226831446786023 ns/iter |
0.7035194575578043 ns/iter |
0.89 |
Regex_Period_Asterisk |
0.9378868226812145 ns/iter |
1.0571858373889613 ns/iter |
0.89 |
Regex_Group_Period_Asterisk_Group |
0.6236011931207555 ns/iter |
0.7037792868251931 ns/iter |
0.89 |
Regex_Period_Plus |
0.9357200049283695 ns/iter |
1.0563654741103086 ns/iter |
0.89 |
Regex_Period |
0.6232075280714728 ns/iter |
0.7036975365405713 ns/iter |
0.89 |
Regex_Caret_Period_Plus_Dollar |
0.934587392540639 ns/iter |
1.0552290457610425 ns/iter |
0.89 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
0.6232065751517003 ns/iter |
0.7036268732417027 ns/iter |
0.89 |
Regex_Caret_Period_Asterisk_Dollar |
0.9355697933074487 ns/iter |
1.055735731422408 ns/iter |
0.89 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
0.6234008684120159 ns/iter |
0.7038612321710441 ns/iter |
0.89 |
Regex_Caret_X_Hyphen |
4.36468433614005 ns/iter |
4.220696234255553 ns/iter |
1.03 |
Regex_Period_Md_Dollar |
29.225143532414517 ns/iter |
33.08054220504927 ns/iter |
0.88 |
Regex_Caret_Slash_Period_Asterisk |
4.685235919178105 ns/iter |
4.576872175342836 ns/iter |
1.02 |
Regex_Caret_Period_Range_Dollar |
1.2467990071435684 ns/iter |
1.406816973212099 ns/iter |
0.89 |
Regex_Nested_Backtrack |
37.872601147713866 ns/iter |
40.77162847499934 ns/iter |
0.93 |
This comment was automatically generated by workflow using github-action-benchmark.
There was a problem hiding this comment.
Benchmark (windows/msvc)
Details
| Benchmark suite | Current: 915a07e | Previous: c2e9865 | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
5.353179999999611 ns/iter |
5.03754017857107 ns/iter |
1.06 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
5.017636999998558 ns/iter |
4.963781250000109 ns/iter |
1.01 |
Regex_Period_Asterisk |
5.02159200000051 ns/iter |
4.9935553571417906 ns/iter |
1.01 |
Regex_Group_Period_Asterisk_Group |
5.019087500000653 ns/iter |
4.971241000000646 ns/iter |
1.01 |
Regex_Period_Plus |
5.040166000001136 ns/iter |
4.626739965685756 ns/iter |
1.09 |
Regex_Period |
5.335814000000028 ns/iter |
4.698793862656079 ns/iter |
1.14 |
Regex_Caret_Period_Plus_Dollar |
5.023780999999872 ns/iter |
4.770987064221962 ns/iter |
1.05 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
5.342751999999109 ns/iter |
5.158830999998827 ns/iter |
1.04 |
Regex_Caret_Period_Asterisk_Dollar |
5.330334000000221 ns/iter |
5.230208999998922 ns/iter |
1.02 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
5.0245700000004945 ns/iter |
5.1189690000001065 ns/iter |
0.98 |
Regex_Caret_X_Hyphen |
8.477029017858024 ns/iter |
8.261820312500033 ns/iter |
1.03 |
Regex_Period_Md_Dollar |
45.290725000000975 ns/iter |
57.24526785712669 ns/iter |
0.79 |
Regex_Caret_Slash_Period_Asterisk |
7.8592265625004085 ns/iter |
7.547571428571891 ns/iter |
1.04 |
Regex_Caret_Period_Range_Dollar |
5.96320446428576 ns/iter |
5.4115035714273425 ns/iter |
1.10 |
Regex_Nested_Backtrack |
55.15266964284901 ns/iter |
77.40322544643264 ns/iter |
0.71 |
JSON_Array_Of_Objects_Unique |
590.9884999998667 ns/iter |
663.0828571429349 ns/iter |
0.89 |
JSON_Parse_1 |
8920.464194356495 ns/iter |
9371.53762706458 ns/iter |
0.95 |
JSON_Parse_Real |
16034.939966115719 ns/iter |
18050.946883454675 ns/iter |
0.89 |
JSON_Parse_Decimal |
11895.287500002332 ns/iter |
11346.490625001592 ns/iter |
1.05 |
JSON_Parse_Schema_ISO_Language |
8088782.6666639745 ns/iter |
8514908.888888486 ns/iter |
0.95 |
JSON_Parse_Integer |
6236.1419642858855 ns/iter |
5899.963392857493 ns/iter |
1.06 |
JSON_Parse_String_NonSSO_Plain |
7961.029638261126 ns/iter |
7860.797991072437 ns/iter |
1.01 |
JSON_Parse_String_SSO_Plain |
3611.434265295953 ns/iter |
3809.528197271075 ns/iter |
0.95 |
JSON_Parse_String_Escape_Heavy |
21985.52583118949 ns/iter |
21779.36874999631 ns/iter |
1.01 |
JSON_Parse_Object_Short_Keys |
13450.791071428674 ns/iter |
13230.142857143588 ns/iter |
1.02 |
JSON_Parse_Object_Scalar_Properties |
6912.538392857722 ns/iter |
6852.501116070593 ns/iter |
1.01 |
JSON_Parse_Object_Array_Properties |
11489.287500000142 ns/iter |
11541.014285715586 ns/iter |
1.00 |
JSON_Parse_Object_Object_Properties |
11714.609375001572 ns/iter |
11738.98281250274 ns/iter |
1.00 |
JSON_Parse_Nested_Containers |
79450.69196428584 ns/iter |
82847.32142855538 ns/iter |
0.96 |
JSON_From_String_Copy |
63.66464285712985 ns/iter |
66.41684821427621 ns/iter |
0.96 |
JSON_From_String_Temporary |
59.84442857140947 ns/iter |
84.49290178571545 ns/iter |
0.71 |
JSON_Number_To_Double |
121.69337500001376 ns/iter |
141.06613432738035 ns/iter |
0.86 |
JSON_Object_At_Last_Key/8 |
7.282068749999229 ns/iter |
7.673453571428013 ns/iter |
0.95 |
JSON_Object_At_Last_Key/32 |
23.584412683207987 ns/iter |
29.06512322199633 ns/iter |
0.81 |
JSON_Object_At_Last_Key/128 |
91.94253607399716 ns/iter |
93.74550920776912 ns/iter |
0.98 |
JSON_Object_At_Last_Key/512 |
425.4139347744505 ns/iter |
434.9490625000385 ns/iter |
0.98 |
JSON_Fast_Hash_Helm_Chart_Lock |
101.31579687502779 ns/iter |
147.94434356641221 ns/iter |
0.68 |
JSON_Equality_Helm_Chart_Lock |
209.7571669751702 ns/iter |
204.89407186550744 ns/iter |
1.02 |
JSON_Divisible_By_Decimal |
300.0117053558773 ns/iter |
392.22656250004206 ns/iter |
0.76 |
JSON_String_Equal/10 |
10.411237453522652 ns/iter |
10.063073437500236 ns/iter |
1.03 |
JSON_String_Equal/100 |
11.638092187499893 ns/iter |
11.657846428570501 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
2.5319996623523284 ns/iter |
2.147161874999881 ns/iter |
1.18 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
14.590556854509073 ns/iter |
14.845013773013235 ns/iter |
0.98 |
JSON_String_Fast_Hash/10 |
6.651686607142437 ns/iter |
6.464222321428435 ns/iter |
1.03 |
JSON_String_Fast_Hash/100 |
6.620973214286404 ns/iter |
6.614464285714153 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
5.391339285714431 ns/iter |
4.963574107143083 ns/iter |
1.09 |
JSON_String_Key_Hash/100 |
11.926257142858633 ns/iter |
10.989365624997305 ns/iter |
1.09 |
JSON_Object_Defines_Miss_Same_Length |
3.8239486607137354 ns/iter |
3.8862712053574655 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Too_Small |
4.089437864445768 ns/iter |
4.503230624999333 ns/iter |
0.91 |
JSON_Object_Defines_Miss_Too_Large |
3.8056949932030912 ns/iter |
3.897338169642138 ns/iter |
0.98 |
Pointer_Object_Traverse |
71.0409464285736 ns/iter |
65.49542410714893 ns/iter |
1.08 |
Pointer_Object_Try_Traverse |
71.40092857144153 ns/iter |
68.7900892857028 ns/iter |
1.04 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
202.65687488138377 ns/iter |
169.08792410715378 ns/iter |
1.20 |
Pointer_Walker_Schema_ISO_Language |
14077956.000000995 ns/iter |
12452246.000002561 ns/iter |
1.13 |
Pointer_Maybe_Tracked_Deeply_Nested/0 |
2457748.594377036 ns/iter |
2498647.4576271037 ns/iter |
0.98 |
Pointer_Maybe_Tracked_Deeply_Nested/1 |
3783953.631284793 ns/iter |
3715191.9786093184 ns/iter |
1.02 |
Pointer_Position_Tracker_Get_Deeply_Nested |
545.788392857105 ns/iter |
596.7808035714585 ns/iter |
0.91 |
JSONPath_Descendant_Filter_Nested |
2396.363928571483 ns/iter |
2558.176898937547 ns/iter |
0.94 |
URITemplateRouter_Create |
41304.689222924055 ns/iter |
40919.40577351352 ns/iter |
1.01 |
URITemplateRouter_Match |
236.53597806512258 ns/iter |
229.79625783525418 ns/iter |
1.03 |
URITemplateRouter_Match_BasePath |
269.84841160039826 ns/iter |
262.31496428571126 ns/iter |
1.03 |
URITemplateRouterView_Restore |
32468.968749991436 ns/iter |
24556.982142858684 ns/iter |
1.32 |
URITemplateRouterView_Match |
179.6299138145085 ns/iter |
174.0526187981397 ns/iter |
1.03 |
URITemplateRouterView_Match_BasePath |
203.26714940767764 ns/iter |
197.26785689887774 ns/iter |
1.03 |
URITemplateRouterView_Arguments |
542.3578571428119 ns/iter |
598.7358035714659 ns/iter |
0.91 |
JSONL_Parse_Large |
32708427.27272338 ns/iter |
32759366.66667197 ns/iter |
1.00 |
JSONL_Parse_Large_GZIP |
33458895.00000112 ns/iter |
33807323.80952352 ns/iter |
0.99 |
JSONLD_Catalog_Annotation_List_Populate |
2771348.106061093 ns/iter |
2807780.7228921857 ns/iter |
0.99 |
JSONLD_Catalog_Materialize |
9056420.000000192 ns/iter |
9177658.666667413 ns/iter |
0.99 |
HTML_Build_Table_100000 |
90662328.57143016 ns/iter |
92631071.42857864 ns/iter |
0.98 |
HTML_Render_Table_100000 |
8290887.77777795 ns/iter |
8200256.000000081 ns/iter |
1.01 |
GZIP_Compress_ISO_Language_Set_3_Locations |
36309004.99999826 ns/iter |
38217711.764700115 ns/iter |
0.95 |
GZIP_Decompress_ISO_Language_Set_3_Locations |
10067298.437501648 ns/iter |
10754879.687500108 ns/iter |
0.94 |
GZIP_Compress_ISO_Language_Set_3_Schema |
2102450.312500537 ns/iter |
2395345.937500082 ns/iter |
0.88 |
GZIP_Decompress_ISO_Language_Set_3_Schema |
650898.2142856874 ns/iter |
595651.2500000192 ns/iter |
1.09 |
JOSE_VerifySignature_RS256 |
21229.72259300465 ns/iter |
24173.274999993413 ns/iter |
0.88 |
JOSE_VerifySignature_ES512 |
1535043.975903695 ns/iter |
1541312.946428722 ns/iter |
1.00 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com