From 48e1cf9fd7e2e7f4821d1255e5943deb305ec0be Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Wed, 9 Sep 2020 13:38:27 +0200 Subject: Minor performance improvements to item saving --- .../Library/LibraryManager.cs | 39 ++++++++++------------ 1 file changed, 18 insertions(+), 21 deletions(-) (limited to 'Emby.Server.Implementations/Library/LibraryManager.cs') diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 375f09f5b..6e7970e01 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -513,10 +513,11 @@ namespace Emby.Server.Implementations.Library throw new ArgumentNullException(nameof(type)); } - if (key.StartsWith(_configurationManager.ApplicationPaths.ProgramDataPath, StringComparison.Ordinal)) + string programDataPath = _configurationManager.ApplicationPaths.ProgramDataPath; + if (key.StartsWith(programDataPath, StringComparison.Ordinal)) { // Try to normalize paths located underneath program-data in an attempt to make them more portable - key = key.Substring(_configurationManager.ApplicationPaths.ProgramDataPath.Length) + key = key.Substring(programDataPath.Length) .TrimStart('/', '\\') .Replace('/', '\\'); } @@ -871,17 +872,17 @@ namespace Emby.Server.Implementations.Library public Guid GetStudioId(string name) { - return GetItemByNameId(Studio.GetPath, name); + return GetItemByNameId(Studio.GetPath(name)); } public Guid GetGenreId(string name) { - return GetItemByNameId(Genre.GetPath, name); + return GetItemByNameId(Genre.GetPath(name)); } public Guid GetMusicGenreId(string name) { - return GetItemByNameId(MusicGenre.GetPath, name); + return GetItemByNameId(MusicGenre.GetPath(name)); } /// @@ -943,7 +944,7 @@ namespace Emby.Server.Implementations.Library { var existing = GetItemList(new InternalItemsQuery { - IncludeItemTypes = new[] { typeof(T).Name }, + IncludeItemTypes = new[] { nameof(MusicArtist) }, Name = name, DtoOptions = options }).Cast() @@ -957,13 +958,11 @@ namespace Emby.Server.Implementations.Library } } - var id = GetItemByNameId(getPathFn, name); - - var item = GetItemById(id) as T; + var path = getPathFn(name); + var id = GetItemByNameId(path); - if (item == null) + if (GetItemById(id) is T item) { - var path = getPathFn(name); item = new T { Name = name, @@ -974,15 +973,16 @@ namespace Emby.Server.Implementations.Library }; CreateItem(item, null); + + return item; } - return item; + return null; } - private Guid GetItemByNameId(Func getPathFn, string name) + private Guid GetItemByNameId(string path) where T : BaseItem, new() { - var path = getPathFn(name); var forceCaseInsensitiveId = _configurationManager.Configuration.EnableNormalizedItemByNameIds; return GetNewItemIdInternal(path, typeof(T), forceCaseInsensitiveId); } @@ -1805,21 +1805,18 @@ namespace Emby.Server.Implementations.Library /// The items. /// The parent item. /// The cancellation token. - public void CreateItems(IEnumerable items, BaseItem parent, CancellationToken cancellationToken) + public void CreateItems(IReadOnlyList items, BaseItem parent, CancellationToken cancellationToken) { - // Don't iterate multiple times - var itemsList = items.ToList(); - - _itemRepository.SaveItems(itemsList, cancellationToken); + _itemRepository.SaveItems(items, cancellationToken); - foreach (var item in itemsList) + foreach (var item in items) { RegisterItem(item); } if (ItemAdded != null) { - foreach (var item in itemsList) + foreach (var item in items) { // With the live tv guide this just creates too much noise if (item.SourceType != SourceType.Library) -- cgit v1.2.3 From 441301069e8e03070e1f024c41ebadfcff88e3ba Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Fri, 11 Sep 2020 12:56:11 +0200 Subject: Fix --- Emby.Server.Implementations/Library/LibraryManager.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Emby.Server.Implementations/Library/LibraryManager.cs') diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index 6e7970e01..cfa714f23 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -960,8 +960,9 @@ namespace Emby.Server.Implementations.Library var path = getPathFn(name); var id = GetItemByNameId(path); + var item = GetItemById(id) as T; - if (GetItemById(id) is T item) + if (item == null) { item = new T { @@ -977,7 +978,7 @@ namespace Emby.Server.Implementations.Library return item; } - return null; + return item; } private Guid GetItemByNameId(string path) -- cgit v1.2.3 From edbd4e0db6ba7e8ba08757f74274e5c83c9660e8 Mon Sep 17 00:00:00 2001 From: Bond_009 Date: Fri, 11 Sep 2020 12:57:57 +0200 Subject: Remove extra return statement --- Emby.Server.Implementations/Library/LibraryManager.cs | 3 --- 1 file changed, 3 deletions(-) (limited to 'Emby.Server.Implementations/Library/LibraryManager.cs') diff --git a/Emby.Server.Implementations/Library/LibraryManager.cs b/Emby.Server.Implementations/Library/LibraryManager.cs index cfa714f23..00282b71a 100644 --- a/Emby.Server.Implementations/Library/LibraryManager.cs +++ b/Emby.Server.Implementations/Library/LibraryManager.cs @@ -961,7 +961,6 @@ namespace Emby.Server.Implementations.Library var path = getPathFn(name); var id = GetItemByNameId(path); var item = GetItemById(id) as T; - if (item == null) { item = new T @@ -974,8 +973,6 @@ namespace Emby.Server.Implementations.Library }; CreateItem(item, null); - - return item; } return item; -- cgit v1.2.3