Skip to content

Commit 0ef9e9c

Browse files
OrganizeImports: Improved performance for same-depth imports, added comments.
1 parent dcef053 commit 0ef9e9c

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

External/Plugins/ASCompletion/Completion/ASGenerator.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4435,15 +4435,19 @@ private static Int32 CompareImports(String import1, String import2)
44354435
String[] parts2 = import2.Split('.');
44364436
int len1 = parts1.Length;
44374437
int len2 = parts2.Length;
4438+
// If the imports are at the same depth, compare them alphabetically.
4439+
if (len1 == len2)
4440+
return cmp.Compare(import1, import2);
44384441
int minPackageLen = ((len1 <= len2) ? len1 : len2) - 1;
4439-
int i;
4440-
for (i = 0; i < minPackageLen; ++i)
4442+
// Alphabetically compare import packages part by part.
4443+
for (int i = 0; i < minPackageLen; ++i)
44414444
{
44424445
int cmpResult = cmp.Compare(parts1[i], parts2[i]);
44434446
if (cmpResult != 0)
44444447
return cmpResult;
44454448
}
4446-
return (len1 == len2) ? cmp.Compare(parts1[i], parts2[i]) : (len1 - len2);
4449+
// One of the packages is a sub-package of the other one. Consider the parent package to compare as less than the sub-package.
4450+
return len1 - len2;
44474451
}
44484452
#endregion
44494453
}

External/Plugins/CodeRefactor/Commands/OrganizeImports.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,15 +230,19 @@ public Int32 Compare(MemberModel item1, MemberModel item2)
230230
String[] parts2 = item2.Type.Split('.');
231231
int len1 = parts1.Length;
232232
int len2 = parts2.Length;
233+
// If the imports are at the same depth, compare them alphabetically.
234+
if (len1 == len2)
235+
return cmp.Compare(item1.Type, item2.Type);
233236
int minPackageLen = ((len1 <= len2) ? len1 : len2) - 1;
234-
int i;
235-
for (i = 0; i < minPackageLen; ++i)
237+
// Alphabetically compare import packages part by part.
238+
for (int i = 0; i < minPackageLen; ++i)
236239
{
237240
int cmpResult = cmp.Compare(parts1[i], parts2[i]);
238241
if (cmpResult != 0)
239242
return cmpResult;
240243
}
241-
return (len1 == len2) ? cmp.Compare(parts1[i], parts2[i]) : (len1 - len2);
244+
// One of the packages is a sub-package of the other one. Consider the parent package to compare as less than the sub-package.
245+
return len1 - len2;
242246
}
243247
}
244248

0 commit comments

Comments
 (0)