more unnecessary perf improvements
This commit is contained in:
		| @@ -47,7 +47,7 @@ public class OnlinePlayerManager : DisposableMediatorSubscriberBase | |||||||
|  |  | ||||||
|         var playerCharacters = _dalamudUtil.GetPlayerCharacters(); |         var playerCharacters = _dalamudUtil.GetPlayerCharacters(); | ||||||
|         var chars = _pairManager.FindAllPairs(playerCharacters); |         var chars = _pairManager.FindAllPairs(playerCharacters); | ||||||
|         var newVisiblePlayers = (from pChar in chars.Where(p => p.Pair != null && p.Pair.InitializePair(p.Character.Name.ToString())) |         var newVisiblePlayers = (from pChar in chars.Where(p => p.Pair.InitializePair(p.Character.Name.ToString())) | ||||||
|                                  select pChar.Pair.UserData).ToList(); |                                  select pChar.Pair.UserData).ToList(); | ||||||
|  |  | ||||||
|         if (newVisiblePlayers.Any()) |         if (newVisiblePlayers.Any()) | ||||||
|   | |||||||
| @@ -21,9 +21,9 @@ public sealed class PairManager : DisposableMediatorSubscriberBase | |||||||
|     private readonly ConcurrentDictionary<GroupData, GroupFullInfoDto> _allGroups = new(GroupDataComparer.Instance); |     private readonly ConcurrentDictionary<GroupData, GroupFullInfoDto> _allGroups = new(GroupDataComparer.Instance); | ||||||
|     private readonly MareConfigService _configurationService; |     private readonly MareConfigService _configurationService; | ||||||
|     private readonly DalamudContextMenu _dalamudContextMenu; |     private readonly DalamudContextMenu _dalamudContextMenu; | ||||||
|  |     private readonly Dictionary<string, Pair> _indexedPairs = new(StringComparer.Ordinal); | ||||||
|     private readonly Func<Pair> _pairFactory; |     private readonly Func<Pair> _pairFactory; | ||||||
|     private Lazy<List<Pair>> _directPairsInternal; |     private Lazy<List<Pair>> _directPairsInternal; | ||||||
|  |  | ||||||
|     private Lazy<Dictionary<GroupFullInfoDto, List<Pair>>> _groupPairsInternal; |     private Lazy<Dictionary<GroupFullInfoDto, List<Pair>>> _groupPairsInternal; | ||||||
|  |  | ||||||
|     public PairManager(ILogger<PairManager> logger, Func<Pair> pairFactory, |     public PairManager(ILogger<PairManager> logger, Func<Pair> pairFactory, | ||||||
| @@ -91,14 +91,9 @@ public sealed class PairManager : DisposableMediatorSubscriberBase | |||||||
|         RecreateLazy(); |         RecreateLazy(); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public List<(PlayerCharacter Character, Pair? Pair)> FindAllPairs(List<PlayerCharacter> playerCharacters) |     public List<(PlayerCharacter Character, Pair Pair)> FindAllPairs(List<PlayerCharacter> playerCharacters) | ||||||
|     { |     { | ||||||
|         var indexedPairs = new Dictionary<string, Pair>(StringComparer.Ordinal); |         return playerCharacters.Select(p => (p, _indexedPairs.TryGetValue(p.GetHash256(), out var pair) ? pair : null)).Where(p => p.Item2 != null).ToList()!; | ||||||
|         foreach (var pair in _allClientPairs.Values) |  | ||||||
|         { |  | ||||||
|             indexedPairs[pair.GetPlayerNameHash()] = pair; |  | ||||||
|         } |  | ||||||
|         return playerCharacters.Select(p => (p, indexedPairs.TryGetValue(p.GetHash256(), out var pair) ? pair : null)).ToList(); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Pair? FindPair(PlayerCharacter? pChar) |     public Pair? FindPair(PlayerCharacter? pChar) | ||||||
| @@ -353,6 +348,14 @@ public sealed class PairManager : DisposableMediatorSubscriberBase | |||||||
|  |  | ||||||
|     private void DalamudUtilOnDelayedFrameworkUpdate() |     private void DalamudUtilOnDelayedFrameworkUpdate() | ||||||
|     { |     { | ||||||
|  |         _indexedPairs.Clear(); | ||||||
|  |         foreach (var pair in _allClientPairs.Values.Where(p => string.IsNullOrEmpty(p.PlayerName))) | ||||||
|  |         { | ||||||
|  |             var hash = pair.GetPlayerNameHash(); | ||||||
|  |             if (string.IsNullOrEmpty(hash)) continue; | ||||||
|  |             _indexedPairs[hash] = pair; | ||||||
|  |         } | ||||||
|  |  | ||||||
|         foreach (Pair pair in _allClientPairs.Select(p => p.Value).Where(p => p.HasCachedPlayer).ToList()) |         foreach (Pair pair in _allClientPairs.Select(p => p.Value).Where(p => p.HasCachedPlayer).ToList()) | ||||||
|         { |         { | ||||||
|             if (!pair.CachedPlayerExists) |             if (!pair.CachedPlayerExists) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 rootdarkarchon
					rootdarkarchon