From 214746bca22c0f8087709596484f03150ad67fa5 Mon Sep 17 00:00:00 2001 From: JustArchi Date: Fri, 19 Aug 2016 04:10:49 +0200 Subject: [PATCH] Optimize updating of server list We can compare new endpoints firstly, to save Save() call if they're equal values-wise. --- ArchiSteamFarm/InMemoryServerListProvider.cs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ArchiSteamFarm/InMemoryServerListProvider.cs b/ArchiSteamFarm/InMemoryServerListProvider.cs index e1046e8c9..cedf1cf0b 100644 --- a/ArchiSteamFarm/InMemoryServerListProvider.cs +++ b/ArchiSteamFarm/InMemoryServerListProvider.cs @@ -40,17 +40,19 @@ namespace ArchiSteamFarm { public Task> FetchServerListAsync() => Task.FromResult>(Servers); - public Task UpdateServerListAsync(IEnumerable endpoints) { - if (endpoints == null) { - Logging.LogNullError(nameof(endpoints)); + public Task UpdateServerListAsync(IEnumerable endPoints) { + if (endPoints == null) { + Logging.LogNullError(nameof(endPoints)); return Task.Delay(0); } - Servers.Clear(); - foreach (IPEndPoint endpoint in endpoints) { - Servers.Add(endpoint); + HashSet newEndPoints = new HashSet(endPoints); + if (Servers.SetEquals(newEndPoints)) { + return Task.Delay(0); } + Servers = newEndPoints; + ServerListUpdated(this, EventArgs.Empty); return Task.Delay(0);