Implement an IO function to mirror a directory using hardlinks#2276
Implement an IO function to mirror a directory using hardlinks#2276
Conversation
🤖 Augment PR SummarySummary: This PR introduces a new I/O utility to mirror an on-disk directory tree by creating directories and hard-linking regular files. Changes:
Technical Notes: Hard links require source and destination to be on the same filesystem; the helper links only regular files and creates destination directories as needed. 🤖 Was this summary useful? React with 👍 or 👎 |
| assert(std::filesystem::is_directory(source)); | ||
| assert(!std::filesystem::exists(destination) || | ||
| std::filesystem::is_directory(destination)); | ||
| std::filesystem::create_directories(destination); |
There was a problem hiding this comment.
hardlink_directory creates destination before walking source; if destination is inside source (or equal to it), the recursive iterator can traverse the newly created tree and lead to unbounded recursion/work. Consider explicitly rejecting that case.
Severity: high
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| std::filesystem::recursive_directory_iterator{source}) { | ||
| const auto target{destination / | ||
| std::filesystem::relative(entry.path(), source)}; | ||
| if (entry.is_directory()) { |
There was a problem hiding this comment.
directory_entry::is_directory() / is_regular_file() follow symlinks, so a symlink-to-dir/file could be treated as a real dir/file and end up mirrored incorrectly (e.g., creating a directory instead of preserving the symlink). If symlinks should be skipped/preserved, this likely needs an explicit is_symlink()/symlink_status() check.
Severity: medium
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
| if (entry.is_directory()) { | ||
| std::filesystem::create_directories(target); | ||
| } else if (entry.is_regular_file()) { | ||
| std::filesystem::create_hard_link(entry.path(), target); |
There was a problem hiding this comment.
Since destination is allowed to already exist, create_hard_link will throw if target already exists (non-empty destination or re-run). It might be worth documenting whether destination must be empty or handling collisions deterministically.
Severity: low
🤖 Was this useful? React with 👍 or 👎, or 🚀 if it prevented an incident/outage.
There was a problem hiding this comment.
1 issue found across 5 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:55">
P1: Prevent mirroring into a destination that is inside (or the same as) the source; otherwise the recursive iterator will walk the newly created destination and repeatedly nest copies, leading to unbounded recursion/disk usage.</violation>
</file>
Reply with feedback, questions, or to request a fix. Tag @cubic-dev-ai to re-run a review.
Signed-off-by: Juan Cruz Viotti <jv@jviotti.com>
777ebd4 to
5a57ad1
Compare
There was a problem hiding this comment.
Benchmark (linux/llvm)
Details
| Benchmark suite | Current: 5a57ad1 | Previous: f4f655d | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
3.111103930164889 ns/iter |
3.1172141592099334 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
3.110523583742918 ns/iter |
3.1100564672847493 ns/iter |
1.00 |
Regex_Period_Asterisk |
3.119309553697485 ns/iter |
3.109813091865993 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
3.1094791896912333 ns/iter |
3.111108684831945 ns/iter |
1.00 |
Regex_Period_Plus |
2.810643887385082 ns/iter |
3.1198149861860784 ns/iter |
0.90 |
Regex_Period |
2.8290720803560565 ns/iter |
3.1112110769962245 ns/iter |
0.91 |
Regex_Caret_Period_Plus_Dollar |
2.8765003104991234 ns/iter |
3.111223474058509 ns/iter |
0.92 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.832203751099353 ns/iter |
3.110424942990577 ns/iter |
0.91 |
Regex_Caret_Period_Asterisk_Dollar |
2.800182633495936 ns/iter |
3.109763825711252 ns/iter |
0.90 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.798495810818994 ns/iter |
3.1130399493176237 ns/iter |
0.90 |
Regex_Caret_X_Hyphen |
10.64408589766149 ns/iter |
13.070853800445347 ns/iter |
0.81 |
Regex_Period_Md_Dollar |
27.25252696641725 ns/iter |
27.58323147265174 ns/iter |
0.99 |
Regex_Caret_Slash_Period_Asterisk |
6.547421135232105 ns/iter |
6.221794406980572 ns/iter |
1.05 |
Regex_Caret_Period_Range_Dollar |
4.046199310191587 ns/iter |
3.1107173280296254 ns/iter |
1.30 |
Regex_Nested_Backtrack |
49.821706637306654 ns/iter |
67.30726220788394 ns/iter |
0.74 |
JSON_Array_Of_Objects_Unique |
430.91359387058986 ns/iter |
448.84102971735854 ns/iter |
0.96 |
JSON_Parse_1 |
6485.565984078924 ns/iter |
6464.888617976841 ns/iter |
1.00 |
JSON_Parse_Real |
11726.920190800833 ns/iter |
11319.311418516962 ns/iter |
1.04 |
JSON_Parse_Decimal |
12003.287226752178 ns/iter |
13046.383373463112 ns/iter |
0.92 |
JSON_Parse_Schema_ISO_Language |
3619172.2135416884 ns/iter |
3662649.743455285 ns/iter |
0.99 |
JSON_Fast_Hash_Helm_Chart_Lock |
61.625779049304356 ns/iter |
61.2941383177788 ns/iter |
1.01 |
JSON_Equality_Helm_Chart_Lock |
172.26347882803108 ns/iter |
182.1147147073309 ns/iter |
0.95 |
JSON_Divisible_By_Decimal |
618.268295415938 ns/iter |
594.884317731431 ns/iter |
1.04 |
JSON_String_Equal/10 |
6.551028916921601 ns/iter |
7.162659975335772 ns/iter |
0.91 |
JSON_String_Equal/100 |
7.169143044728795 ns/iter |
7.791722962247808 ns/iter |
0.92 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9355273247066294 ns/iter |
0.9389600744095493 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
10.269355712250693 ns/iter |
14.616271196763 ns/iter |
0.70 |
JSON_String_Fast_Hash/10 |
2.80047173471714 ns/iter |
2.4890095785990947 ns/iter |
1.13 |
JSON_String_Fast_Hash/100 |
2.801063085428809 ns/iter |
2.489292034368238 ns/iter |
1.13 |
JSON_String_Key_Hash/10 |
2.1814259401384843 ns/iter |
2.747857289520358 ns/iter |
0.79 |
JSON_String_Key_Hash/100 |
6.533747713225301 ns/iter |
9.053698379112516 ns/iter |
0.72 |
JSON_Object_Defines_Miss_Same_Length |
3.738219884497462 ns/iter |
3.7829984499915934 ns/iter |
0.99 |
JSON_Object_Defines_Miss_Too_Small |
3.7399083452822115 ns/iter |
3.7382095420090815 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.744293973407715 ns/iter |
3.736837879352388 ns/iter |
1.00 |
Pointer_Object_Traverse |
44.26575756017891 ns/iter |
45.04948347106831 ns/iter |
0.98 |
Pointer_Object_Try_Traverse |
53.46944129204382 ns/iter |
56.3936321365806 ns/iter |
0.95 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
309.24052750229606 ns/iter |
302.55917392668044 ns/iter |
1.02 |
Pointer_Walker_Schema_ISO_Language |
3237916.490909046 ns/iter |
3110357.637168279 ns/iter |
1.04 |
Schema_Frame_WoT_References |
4857076.812499707 ns/iter |
4829278.13793124 ns/iter |
1.01 |
Schema_Frame_OMC_References |
21260322.771429077 ns/iter |
19985477.885714836 ns/iter |
1.06 |
Schema_Frame_OMC_Locations |
19530698.648647584 ns/iter |
18332774.8684196 ns/iter |
1.07 |
Schema_Frame_ISO_Language_Locations |
103902104.00000417 ns/iter |
102940938.33334728 ns/iter |
1.01 |
Schema_Frame_KrakenD_References |
42854211.82353008 ns/iter |
38421191.05555892 ns/iter |
1.12 |
Schema_Frame_KrakenD_Reachable |
596533343.9999086 ns/iter |
590997132.0000978 ns/iter |
1.01 |
Schema_Iterator_ISO_Language |
2428045.5993028525 ns/iter |
2360705.7676765015 ns/iter |
1.03 |
Schema_Frame_ISO_Language_Locations_To_JSON |
132453738.75000155 ns/iter |
134375696.00000644 ns/iter |
0.99 |
Schema_Tracker_ISO_Language |
29327900.333332952 ns/iter |
27674098.833334897 ns/iter |
1.06 |
Schema_Tracker_ISO_Language_To_JSON |
25114431.481479526 ns/iter |
25250267.296293583 ns/iter |
0.99 |
Schema_Format_ISO_Language_To_JSON |
108712372.49998938 ns/iter |
109824641.8333512 ns/iter |
0.99 |
Schema_Bundle_Meta_2020_12 |
1659509.6753561853 ns/iter |
1652251.8042960751 ns/iter |
1.00 |
Schema_Frame_Many_Resources_References |
372034892.49998254 ns/iter |
366802886.00001633 ns/iter |
1.01 |
Alterschema_Check_Readibility_ISO_Language_Set_3 |
216863232.33332887 ns/iter |
218202785.6666385 ns/iter |
0.99 |
Alterschema_Check_Readibility_OMC |
32354035.28571537 ns/iter |
32177820.86363224 ns/iter |
1.01 |
Alterschema_Apply_Readibility_KrakenD |
587324747.9999008 ns/iter |
603704688.9999828 ns/iter |
0.97 |
EditorSchema_ForEditor_EmbeddedResources |
13507492.980767649 ns/iter |
13635575.058811793 ns/iter |
0.99 |
URITemplateRouter_Create |
17282.401044988826 ns/iter |
16384.529010316826 ns/iter |
1.05 |
URITemplateRouter_Match |
183.01647172864435 ns/iter |
190.0155686612536 ns/iter |
0.96 |
URITemplateRouterView_Restore |
6789.056927244955 ns/iter |
6911.057347634993 ns/iter |
0.98 |
URITemplateRouterView_Match |
153.22395304231833 ns/iter |
143.50491508535978 ns/iter |
1.07 |
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: 5a57ad1 | Previous: f4f655d | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
1.7205797512538308 ns/iter |
1.844746472720158 ns/iter |
0.93 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
1.6767802535756366 ns/iter |
2.2476097639278505 ns/iter |
0.75 |
Regex_Period_Asterisk |
1.6992594159814651 ns/iter |
1.864787113201521 ns/iter |
0.91 |
Regex_Group_Period_Asterisk_Group |
2.005591808363679 ns/iter |
2.1498487204275825 ns/iter |
0.93 |
Regex_Period_Plus |
2.570804184858387 ns/iter |
2.160578781058244 ns/iter |
1.19 |
Regex_Period |
2.4113244897203394 ns/iter |
2.1097227303620443 ns/iter |
1.14 |
Regex_Caret_Period_Plus_Dollar |
2.5395059857698965 ns/iter |
2.227344376776958 ns/iter |
1.14 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.6443627581482514 ns/iter |
2.224463803567951 ns/iter |
1.19 |
Regex_Caret_Period_Asterisk_Dollar |
2.0375222090258593 ns/iter |
1.989441020016859 ns/iter |
1.02 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
2.1889502204626785 ns/iter |
2.143159077332581 ns/iter |
1.02 |
Regex_Caret_X_Hyphen |
7.647346777807044 ns/iter |
7.848758304714395 ns/iter |
0.97 |
Regex_Period_Md_Dollar |
24.45787932554691 ns/iter |
34.34207291159958 ns/iter |
0.71 |
Regex_Caret_Slash_Period_Asterisk |
5.886628022454927 ns/iter |
9.717284647585037 ns/iter |
0.61 |
Regex_Caret_Period_Range_Dollar |
2.092814724818934 ns/iter |
2.9511714233862274 ns/iter |
0.71 |
Regex_Nested_Backtrack |
28.872626899890644 ns/iter |
50.95998884700925 ns/iter |
0.57 |
JSON_Array_Of_Objects_Unique |
367.9876860708655 ns/iter |
572.6334708582962 ns/iter |
0.64 |
JSON_Parse_1 |
4494.297924930186 ns/iter |
8107.412520894573 ns/iter |
0.55 |
JSON_Parse_Real |
7125.2219701824415 ns/iter |
11046.909360178486 ns/iter |
0.64 |
JSON_Parse_Decimal |
8800.54846306458 ns/iter |
11983.07338376348 ns/iter |
0.73 |
JSON_Parse_Schema_ISO_Language |
4257331.340425557 ns/iter |
6345856.696968481 ns/iter |
0.67 |
JSON_Fast_Hash_Helm_Chart_Lock |
64.2058183063613 ns/iter |
82.18877405729341 ns/iter |
0.78 |
JSON_Equality_Helm_Chart_Lock |
142.1192442839929 ns/iter |
161.90489217832416 ns/iter |
0.88 |
JSON_Divisible_By_Decimal |
450.1781830361545 ns/iter |
506.9292275486708 ns/iter |
0.89 |
JSON_String_Equal/10 |
6.757844496672762 ns/iter |
6.347026067776119 ns/iter |
1.06 |
JSON_String_Equal/100 |
7.029892047842039 ns/iter |
5.890762119284736 ns/iter |
1.19 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.9298901945047312 ns/iter |
0.763064161996621 ns/iter |
1.22 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
4.137390495539489 ns/iter |
3.3882620731106172 ns/iter |
1.22 |
JSON_String_Fast_Hash/10 |
2.9275862066300373 ns/iter |
2.377703876374044 ns/iter |
1.23 |
JSON_String_Fast_Hash/100 |
2.4567223820328747 ns/iter |
2.0125323493567717 ns/iter |
1.22 |
JSON_String_Key_Hash/10 |
1.976594288685461 ns/iter |
1.315072246393345 ns/iter |
1.50 |
JSON_String_Key_Hash/100 |
3.36863297669564 ns/iter |
2.1640995470057494 ns/iter |
1.56 |
JSON_Object_Defines_Miss_Same_Length |
2.933606722596829 ns/iter |
2.4652240523143067 ns/iter |
1.19 |
JSON_Object_Defines_Miss_Too_Small |
2.911243402114783 ns/iter |
2.4866682591478515 ns/iter |
1.17 |
JSON_Object_Defines_Miss_Too_Large |
2.785235229300232 ns/iter |
2.472302024046907 ns/iter |
1.13 |
Pointer_Object_Traverse |
19.113127399140787 ns/iter |
18.895185719354714 ns/iter |
1.01 |
Pointer_Object_Try_Traverse |
26.60838937147772 ns/iter |
28.178961549178318 ns/iter |
0.94 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
163.53474419024053 ns/iter |
194.80482641741327 ns/iter |
0.84 |
Pointer_Walker_Schema_ISO_Language |
4912104.79104503 ns/iter |
5966304.7450982835 ns/iter |
0.82 |
Schema_Frame_WoT_References |
4654454.006493756 ns/iter |
6113225.543478383 ns/iter |
0.76 |
Schema_Frame_OMC_References |
24072790.206897195 ns/iter |
29597737.874998603 ns/iter |
0.81 |
Schema_Frame_OMC_Locations |
22217853.448276807 ns/iter |
26219540.076917488 ns/iter |
0.85 |
Schema_Frame_ISO_Language_Locations |
82379476.88889511 ns/iter |
94280944.33330141 ns/iter |
0.87 |
Schema_Frame_KrakenD_References |
45326199.999999516 ns/iter |
57328919.846161 ns/iter |
0.79 |
Schema_Frame_KrakenD_Reachable |
404496020.50006205 ns/iter |
632233583.0000156 ns/iter |
0.64 |
Schema_Iterator_ISO_Language |
2215195.9050850533 ns/iter |
3235104.343220536 ns/iter |
0.68 |
Schema_Frame_ISO_Language_Locations_To_JSON |
101616434.57143198 ns/iter |
94011916.571422 ns/iter |
1.08 |
Schema_Tracker_ISO_Language |
43413340.705883995 ns/iter |
31849534.090910807 ns/iter |
1.36 |
Schema_Tracker_ISO_Language_To_JSON |
22827391.222222105 ns/iter |
14095422.340910153 ns/iter |
1.62 |
Schema_Format_ISO_Language_To_JSON |
127742423.500005 ns/iter |
79117812.37504555 ns/iter |
1.61 |
Schema_Bundle_Meta_2020_12 |
1597273.9107111492 ns/iter |
1250164.6660941 ns/iter |
1.28 |
Schema_Frame_Many_Resources_References |
467979708.50002456 ns/iter |
284482333.49990916 ns/iter |
1.65 |
Alterschema_Check_Readibility_ISO_Language_Set_3 |
188114875.000025 ns/iter |
144747258.40000245 ns/iter |
1.30 |
Alterschema_Check_Readibility_OMC |
42149886.55556024 ns/iter |
31971657.608694486 ns/iter |
1.32 |
Alterschema_Apply_Readibility_KrakenD |
677654207.9999217 ns/iter |
471833145.5001135 ns/iter |
1.44 |
EditorSchema_ForEditor_EmbeddedResources |
12783498.384609314 ns/iter |
10040978.614275835 ns/iter |
1.27 |
URITemplateRouter_Create |
17298.725525081703 ns/iter |
16168.440763404855 ns/iter |
1.07 |
URITemplateRouter_Match |
175.2402826439465 ns/iter |
188.34631887579002 ns/iter |
0.93 |
URITemplateRouterView_Restore |
12889.235752144034 ns/iter |
13825.171668475426 ns/iter |
0.93 |
URITemplateRouterView_Match |
127.27955405827998 ns/iter |
140.28052140543454 ns/iter |
0.91 |
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: 5a57ad1 | Previous: f4f655d | Ratio |
|---|---|---|---|
Regex_Lower_S_Or_Upper_S_Asterisk |
4.126355543082546 ns/iter |
4.132108324047456 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
4.1016429222762065 ns/iter |
4.098135044642452 ns/iter |
1.00 |
Regex_Period_Asterisk |
4.731492867703999 ns/iter |
4.761677678571021 ns/iter |
0.99 |
Regex_Group_Period_Asterisk_Group |
4.41539952040829 ns/iter |
4.4291731250012845 ns/iter |
1.00 |
Regex_Period_Plus |
5.047631742197707 ns/iter |
5.0495249999994485 ns/iter |
1.00 |
Regex_Period |
5.045608000000357 ns/iter |
5.068198000001303 ns/iter |
1.00 |
Regex_Caret_Period_Plus_Dollar |
4.733765045698862 ns/iter |
4.758532376692641 ns/iter |
0.99 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
4.421788749999678 ns/iter |
4.438898837304047 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
4.422986127532498 ns/iter |
4.426588124999853 ns/iter |
1.00 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
4.10017238656355 ns/iter |
4.115813355564276 ns/iter |
1.00 |
Regex_Caret_X_Hyphen |
7.260406250001747 ns/iter |
7.328664062501591 ns/iter |
0.99 |
Regex_Period_Md_Dollar |
35.62325712752302 ns/iter |
36.00392252676101 ns/iter |
0.99 |
Regex_Caret_Slash_Period_Asterisk |
6.951165178571322 ns/iter |
7.005639508929866 ns/iter |
0.99 |
Regex_Caret_Period_Range_Dollar |
4.110208846625397 ns/iter |
4.143116850829377 ns/iter |
0.99 |
Regex_Nested_Backtrack |
102.72954687501112 ns/iter |
99.7784218749942 ns/iter |
1.03 |
JSON_Array_Of_Objects_Unique |
491.68480000003 ns/iter |
495.52220000009584 ns/iter |
0.99 |
JSON_Parse_1 |
8877.00054910639 ns/iter |
9069.266208632387 ns/iter |
0.98 |
JSON_Parse_Real |
16105.64285714235 ns/iter |
15835.676339282907 ns/iter |
1.02 |
JSON_Parse_Decimal |
16741.343580422792 ns/iter |
16549.35791980633 ns/iter |
1.01 |
JSON_Parse_Schema_ISO_Language |
6159328.571430122 ns/iter |
6440273.214287068 ns/iter |
0.96 |
JSON_Fast_Hash_Helm_Chart_Lock |
71.69137500000033 ns/iter |
69.92586607142113 ns/iter |
1.03 |
JSON_Equality_Helm_Chart_Lock |
263.92338008586034 ns/iter |
261.06601388683737 ns/iter |
1.01 |
JSON_Divisible_By_Decimal |
1168.9135937498208 ns/iter |
1179.3098437497208 ns/iter |
0.99 |
JSON_String_Equal/10 |
12.27131785714164 ns/iter |
12.368448214289174 ns/iter |
0.99 |
JSON_String_Equal/100 |
12.971637499999492 ns/iter |
13.284735714287471 ns/iter |
0.98 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
1.8892775012652605 ns/iter |
1.9032760731275487 ns/iter |
0.99 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
12.576216071429208 ns/iter |
13.331869642858658 ns/iter |
0.94 |
JSON_String_Fast_Hash/10 |
3.790333386089603 ns/iter |
3.88306981449492 ns/iter |
0.98 |
JSON_String_Fast_Hash/100 |
3.861064174106587 ns/iter |
4.064055944757999 ns/iter |
0.95 |
JSON_String_Key_Hash/10 |
4.104166748401259 ns/iter |
4.464919484612912 ns/iter |
0.92 |
JSON_String_Key_Hash/100 |
16.597645089286214 ns/iter |
14.436482078406222 ns/iter |
1.15 |
JSON_Object_Defines_Miss_Same_Length |
3.525131445384446 ns/iter |
3.519448520500817 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
5.029883000001973 ns/iter |
5.1146517857136224 ns/iter |
0.98 |
JSON_Object_Defines_Miss_Too_Large |
4.0867136680114236 ns/iter |
4.189221158844105 ns/iter |
0.98 |
Pointer_Object_Traverse |
52.96736000000237 ns/iter |
53.405019999991055 ns/iter |
0.99 |
Pointer_Object_Try_Traverse |
72.72015625000095 ns/iter |
74.61685267856463 ns/iter |
0.97 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
169.51126513492966 ns/iter |
150.1090357142841 ns/iter |
1.13 |
Pointer_Walker_Schema_ISO_Language |
11500503.124999285 ns/iter |
12837399.999999175 ns/iter |
0.90 |
Schema_Frame_WoT_References |
9826202.66666648 ns/iter |
10369922.666668572 ns/iter |
0.95 |
Schema_Frame_OMC_References |
43043594.11765504 ns/iter |
45746227.272729814 ns/iter |
0.94 |
Schema_Frame_OMC_Locations |
39477683.33332786 ns/iter |
41361375.000008136 ns/iter |
0.95 |
Schema_Frame_ISO_Language_Locations |
197279900.00001228 ns/iter |
212467299.99999538 ns/iter |
0.93 |
Schema_Frame_KrakenD_References |
89654628.57141964 ns/iter |
94433971.42857586 ns/iter |
0.95 |
Schema_Frame_KrakenD_Reachable |
509395600.0000617 ns/iter |
542267799.9999906 ns/iter |
0.94 |
Schema_Iterator_ISO_Language |
4203395.783132505 ns/iter |
4542705.000000069 ns/iter |
0.93 |
Schema_Frame_ISO_Language_Locations_To_JSON |
253737000.00000098 ns/iter |
264814166.66668642 ns/iter |
0.96 |
Schema_Tracker_ISO_Language |
45745790.90907801 ns/iter |
49791460.00000583 ns/iter |
0.92 |
Schema_Tracker_ISO_Language_To_JSON |
52207439.999983765 ns/iter |
56527970.00000192 ns/iter |
0.92 |
Schema_Format_ISO_Language_To_JSON |
187551050.00008142 ns/iter |
206645666.6666454 ns/iter |
0.91 |
Schema_Bundle_Meta_2020_12 |
2773116.6666576494 ns/iter |
2841964.830510841 ns/iter |
0.98 |
Schema_Frame_Many_Resources_References |
1454600899.9998322 ns/iter |
1536525199.9999146 ns/iter |
0.95 |
Alterschema_Check_Readibility_ISO_Language_Set_3 |
314779499.999986 ns/iter |
336517800.0000242 ns/iter |
0.94 |
Alterschema_Check_Readibility_OMC |
57984790.90909 ns/iter |
62817936.36363049 ns/iter |
0.92 |
Alterschema_Apply_Readibility_KrakenD |
985114500.0000088 ns/iter |
1085041700.000147 ns/iter |
0.91 |
EditorSchema_ForEditor_EmbeddedResources |
27375343.99998367 ns/iter |
30114440.9091049 ns/iter |
0.91 |
URITemplateRouter_Create |
22435.915625003134 ns/iter |
22435.892456558086 ns/iter |
1.00 |
URITemplateRouter_Match |
207.82362018645225 ns/iter |
216.87399999997584 ns/iter |
0.96 |
URITemplateRouterView_Restore |
30619.129464294507 ns/iter |
31583.281249995467 ns/iter |
0.97 |
URITemplateRouterView_Match |
153.44450892855426 ns/iter |
157.21633928572084 ns/iter |
0.98 |
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: 5a57ad1 | Previous: 932001d | Ratio |
|---|---|---|---|
URITemplateRouter_Create |
14874.058669393056 ns/iter |
14788.961016841573 ns/iter |
1.01 |
URITemplateRouter_Match |
153.36909782915538 ns/iter |
152.9655834283247 ns/iter |
1.00 |
URITemplateRouterView_Restore |
7958.934883244426 ns/iter |
8384.390101033496 ns/iter |
0.95 |
URITemplateRouterView_Match |
129.8021638225026 ns/iter |
128.14765925448395 ns/iter |
1.01 |
EditorSchema_ForEditor_EmbeddedResources |
14331955.79594045 ns/iter |
14818392.541675014 ns/iter |
0.97 |
Alterschema_Check_Readibility_ISO_Language_Set_3 |
220155779.99998942 ns/iter |
218410956.9999843 ns/iter |
1.01 |
Alterschema_Check_Readibility_OMC |
36288081.68420954 ns/iter |
35583898.30000124 ns/iter |
1.02 |
Alterschema_Apply_Readibility_KrakenD |
666697526.0002346 ns/iter |
635134483.9997637 ns/iter |
1.05 |
Schema_Frame_WoT_References |
5394275.5877855895 ns/iter |
5458533.141732041 ns/iter |
0.99 |
Schema_Frame_OMC_References |
23007421.793103088 ns/iter |
22727141.225804217 ns/iter |
1.01 |
Schema_Frame_OMC_Locations |
21530280.437502824 ns/iter |
21290662.42424194 ns/iter |
1.01 |
Schema_Frame_ISO_Language_Locations |
108120714.16667853 ns/iter |
108904241.33333455 ns/iter |
0.99 |
Schema_Frame_KrakenD_References |
43822130.06249458 ns/iter |
44164804.31248715 ns/iter |
0.99 |
Schema_Frame_KrakenD_Reachable |
620081922.9998161 ns/iter |
631160464.9997662 ns/iter |
0.98 |
Schema_Iterator_ISO_Language |
2757326.953488602 ns/iter |
2764350.6653540377 ns/iter |
1.00 |
Schema_Frame_ISO_Language_Locations_To_JSON |
256120327.66662195 ns/iter |
256593512.6666924 ns/iter |
1.00 |
Schema_Tracker_ISO_Language |
33674034.00000057 ns/iter |
30701207.695647493 ns/iter |
1.10 |
Schema_Tracker_ISO_Language_To_JSON |
32585462.81817458 ns/iter |
30719590.545448806 ns/iter |
1.06 |
Schema_Format_ISO_Language_To_JSON |
117858871.50002356 ns/iter |
117612424.6666935 ns/iter |
1.00 |
Schema_Bundle_Meta_2020_12 |
1891654.3062298382 ns/iter |
1914095.7486304296 ns/iter |
0.99 |
Schema_Frame_Many_Resources_References |
395191036.0000284 ns/iter |
394910807.4999685 ns/iter |
1.00 |
Pointer_Object_Traverse |
27.571344365505528 ns/iter |
27.562737372986717 ns/iter |
1.00 |
Pointer_Object_Try_Traverse |
27.272505996987018 ns/iter |
27.282953745389925 ns/iter |
1.00 |
Pointer_Push_Back_Pointer_To_Weak_Pointer |
157.3659990573837 ns/iter |
162.9100280082002 ns/iter |
0.97 |
Pointer_Walker_Schema_ISO_Language |
3613849.5706800977 ns/iter |
3712010.7424241244 ns/iter |
0.97 |
JSON_Array_Of_Objects_Unique |
423.3066090453622 ns/iter |
410.84844709782794 ns/iter |
1.03 |
JSON_Parse_1 |
8347.24444073693 ns/iter |
8464.043888962962 ns/iter |
0.99 |
JSON_Parse_Real |
12699.595793124448 ns/iter |
12634.15563039969 ns/iter |
1.01 |
JSON_Parse_Decimal |
18656.344974080745 ns/iter |
18688.23326826741 ns/iter |
1.00 |
JSON_Parse_Schema_ISO_Language |
4706526.906040882 ns/iter |
4726389.580000615 ns/iter |
1.00 |
JSON_Fast_Hash_Helm_Chart_Lock |
61.45584097458682 ns/iter |
53.26228830958655 ns/iter |
1.15 |
JSON_Equality_Helm_Chart_Lock |
157.0414729323014 ns/iter |
159.9301232420685 ns/iter |
0.98 |
JSON_Divisible_By_Decimal |
585.652654645258 ns/iter |
579.8566887271725 ns/iter |
1.01 |
JSON_String_Equal/10 |
6.312399612946072 ns/iter |
6.320354984765237 ns/iter |
1.00 |
JSON_String_Equal/100 |
6.932963447124537 ns/iter |
6.9376031775535765 ns/iter |
1.00 |
JSON_String_Equal_Small_By_Perfect_Hash/10 |
0.6392232900702519 ns/iter |
0.6235508150177344 ns/iter |
1.03 |
JSON_String_Equal_Small_By_Runtime_Perfect_Hash/10 |
13.489533909201368 ns/iter |
13.80740123581892 ns/iter |
0.98 |
JSON_String_Fast_Hash/10 |
1.9078339559533422 ns/iter |
1.9068406442373285 ns/iter |
1.00 |
JSON_String_Fast_Hash/100 |
1.9052177696860182 ns/iter |
1.9061313327511429 ns/iter |
1.00 |
JSON_String_Key_Hash/10 |
1.255205350253443 ns/iter |
1.2459344555484697 ns/iter |
1.01 |
JSON_String_Key_Hash/100 |
12.438748234428543 ns/iter |
12.441497003841265 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Same_Length |
3.4357354407238283 ns/iter |
3.4230194664371525 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Small |
3.423725871966768 ns/iter |
3.4228693197547786 ns/iter |
1.00 |
JSON_Object_Defines_Miss_Too_Large |
3.4244468520853255 ns/iter |
3.423555969599852 ns/iter |
1.00 |
Regex_Lower_S_Or_Upper_S_Asterisk |
3.1124014639987165 ns/iter |
3.1137278326489506 ns/iter |
1.00 |
Regex_Caret_Lower_S_Or_Upper_S_Asterisk_Dollar |
3.1120652349251228 ns/iter |
3.114822126140609 ns/iter |
1.00 |
Regex_Period_Asterisk |
3.113109912586799 ns/iter |
3.1250796066100377 ns/iter |
1.00 |
Regex_Group_Period_Asterisk_Group |
3.1140062446078294 ns/iter |
3.115238751037969 ns/iter |
1.00 |
Regex_Period_Plus |
2.8009849404362237 ns/iter |
2.802532653067045 ns/iter |
1.00 |
Regex_Period |
2.801262557367535 ns/iter |
2.802090209367281 ns/iter |
1.00 |
Regex_Caret_Period_Plus_Dollar |
2.801206551526696 ns/iter |
2.8013955672339383 ns/iter |
1.00 |
Regex_Caret_Group_Period_Plus_Group_Dollar |
2.803330750712762 ns/iter |
2.802981054367845 ns/iter |
1.00 |
Regex_Caret_Period_Asterisk_Dollar |
4.047241831078428 ns/iter |
4.045450474383607 ns/iter |
1.00 |
Regex_Caret_Group_Period_Asterisk_Group_Dollar |
4.044494690105497 ns/iter |
4.046279063012166 ns/iter |
1.00 |
Regex_Caret_X_Hyphen |
13.69480808037215 ns/iter |
13.071841554818416 ns/iter |
1.05 |
Regex_Period_Md_Dollar |
35.929812300234936 ns/iter |
39.00868797087494 ns/iter |
0.92 |
Regex_Caret_Slash_Period_Asterisk |
8.716127669865324 ns/iter |
8.712587889821446 ns/iter |
1.00 |
Regex_Caret_Period_Range_Dollar |
4.0480778849609145 ns/iter |
4.044261936815824 ns/iter |
1.00 |
Regex_Nested_Backtrack |
57.25707997055703 ns/iter |
62.44417784371207 ns/iter |
0.92 |
This comment was automatically generated by workflow using github-action-benchmark.
Signed-off-by: Juan Cruz Viotti jv@jviotti.com