Improve sorting performance

Improved performance of AlphanumComparatorFast sorting for names, as well as the default sorting for containers
This commit is contained in:
VaDiM
2022-12-03 04:47:42 +03:00
parent 6a9aad510c
commit dfbe46e1e5
3 changed files with 112 additions and 22 deletions

View File

@ -80,7 +80,12 @@ namespace AssetStudioGUI
//asset list sorting
private int sortColumn = -1;
private bool reverseSort;
#if NET6_0_OR_GREATER
private AlphanumComparatorFastNet alphanumComparator = new AlphanumComparatorFastNet();
#else
private AlphanumComparatorFast alphanumComparator = new AlphanumComparatorFast();
#endif
//asset list filter
private System.Timers.Timer delayTimer;
@ -655,9 +660,10 @@ namespace AssetStudioGUI
{
visibleAssets.Sort((a, b) =>
{
var at = a.SubItems[sortColumn].Text;
var bt = b.SubItems[sortColumn].Text;
return reverseSort ? bt.CompareTo(at) : at.CompareTo(bt);
var at = a.SubItems[sortColumn].Text.AsSpan();
var bt = b.SubItems[sortColumn].Text.AsSpan();
return reverseSort ? MemoryExtensions.CompareTo(bt, at, StringComparison.OrdinalIgnoreCase) : MemoryExtensions.CompareTo(at, bt, StringComparison.OrdinalIgnoreCase);
});
}
assetListView.EndUpdate();