From 64d9718c3404781723cecd41b9d0574d9d6d1e02 Mon Sep 17 00:00:00 2001 From: Kanglai Qian Date: Sat, 21 May 2022 21:10:02 +0800 Subject: [PATCH] avoid useless search for non exist files (#967) --- AssetStudio/AssetsManager.cs | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index 9128620..5dc3152 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -17,6 +17,7 @@ namespace AssetStudio internal Dictionary resourceFileReaders = new Dictionary(StringComparer.OrdinalIgnoreCase); private List importFiles = new List(); + private List noexistFiles = new List(); private HashSet importFilesHash = new HashSet(StringComparer.OrdinalIgnoreCase); private HashSet assetsFileListHash = new HashSet(StringComparer.OrdinalIgnoreCase); @@ -54,6 +55,7 @@ namespace AssetStudio importFiles.Clear(); importFilesHash.Clear(); + noexistFiles.Clear(); assetsFileListHash.Clear(); ReadAssets(); @@ -110,19 +112,26 @@ namespace AssetStudio if (!importFilesHash.Contains(sharedFileName)) { var sharedFilePath = Path.Combine(Path.GetDirectoryName(reader.FullPath), sharedFileName); - if (!File.Exists(sharedFilePath)) + if (!noexistFiles.Contains(sharedFilePath)) { - var findFiles = Directory.GetFiles(Path.GetDirectoryName(reader.FullPath), sharedFileName, SearchOption.AllDirectories); - if (findFiles.Length > 0) + if (!File.Exists(sharedFilePath)) { - sharedFilePath = findFiles[0]; + var findFiles = Directory.GetFiles(Path.GetDirectoryName(reader.FullPath), sharedFileName, SearchOption.AllDirectories); + if (findFiles.Length > 0) + { + sharedFilePath = findFiles[0]; + } } - } - if (File.Exists(sharedFilePath)) - { - importFiles.Add(sharedFilePath); - importFilesHash.Add(sharedFileName); + if (File.Exists(sharedFilePath)) + { + importFiles.Add(sharedFilePath); + importFilesHash.Add(sharedFileName); + } + else + { + noexistFiles.Add(sharedFilePath); + } } } }