From eed42bd108d2103e267f7f6843f96378f272fb83 Mon Sep 17 00:00:00 2001 From: MBucari Date: Sat, 11 Mar 2023 21:50:30 -0700 Subject: [PATCH] Improve grid update performance --- .../ViewModels/ProductsDisplayViewModel.cs | 4 ++-- Source/LibationWinForms/GridView/ProductsGrid.cs | 9 ++------- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs b/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs index 8307a48b..1420bc98 100644 --- a/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs +++ b/Source/LibationAvalonia/ViewModels/ProductsDisplayViewModel.cs @@ -132,7 +132,7 @@ namespace LibationAvalonia.ViewModels //Add absent entries to grid, or update existing entry var allEntries = SOURCE.BookEntries().ToList(); var seriesEntries = SOURCE.SeriesEntries().ToList(); - var parentedEpisodes = dbBooks.ParentedEpisodes().ToList(); + var parentedEpisodes = dbBooks.ParentedEpisodes().ToHashSet(); await Dispatcher.UIThread.InvokeAsync(() => { @@ -142,7 +142,7 @@ namespace LibationAvalonia.ViewModels if (libraryBook.Book.IsProduct()) UpsertBook(libraryBook, existingEntry); - else if (parentedEpisodes.Any(lb => lb == libraryBook)) + else if (parentedEpisodes.Contains(libraryBook)) //Only try to add or update is this LibraryBook is a know child of a parent UpsertEpisode(libraryBook, existingEntry, seriesEntries, dbBooks); } diff --git a/Source/LibationWinForms/GridView/ProductsGrid.cs b/Source/LibationWinForms/GridView/ProductsGrid.cs index 84afdce0..c5d59792 100644 --- a/Source/LibationWinForms/GridView/ProductsGrid.cs +++ b/Source/LibationWinForms/GridView/ProductsGrid.cs @@ -265,9 +265,7 @@ namespace LibationWinForms.GridView var allEntries = bindingList.AllItems().BookEntries(); var seriesEntries = bindingList.AllItems().SeriesEntries().ToList(); - var parentedEpisodes = dbBooks.ParentedEpisodes().ToList(); - - var sw = new Stopwatch(); + var parentedEpisodes = dbBooks.ParentedEpisodes().ToHashSet(); foreach (var libraryBook in dbBooks.OrderBy(e => e.DateAdded)) { @@ -278,14 +276,11 @@ namespace LibationWinForms.GridView AddOrUpdateBook(libraryBook, existingEntry); continue; } - sw.Start(); - if (parentedEpisodes.Any(lb => lb == libraryBook)) + if (parentedEpisodes.Contains(libraryBook)) { - sw.Stop(); //Only try to add or update is this LibraryBook is a know child of a parent AddOrUpdateEpisode(libraryBook, existingEntry, seriesEntries, dbBooks); } - sw.Stop(); } bindingList.SuspendFilteringOnUpdate = false;