private static void Run(IDupDetector dupDetector, int workers, string folder) { var files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories); var result = dupDetector.Find(files, workers); foreach (var dup in result.Duplicates.Where(x => x != null)) { var dupItems = dup.Items.OrderByDescending(f => f.ModifiedTime); var latestItem = dupItems.First(); Log("\tLatest one:"); Log(string.Format("\t\t{0}", latestItem.FileName)); var remainingItems = dupItems.Skip(1).ToArray(); Log(string.Format("\tDup items:{0}", remainingItems.Length)); foreach (var item in remainingItems) { Log(string.Format("\t\t{0}", item.FileName)); } Log(string.Empty); } Log(string.Empty); Log($"Failed to process: {result.FailedToProcessFiles.Count}", true); foreach (var item in result.FailedToProcessFiles) { Log($"\t{item}"); } Log($"Dup groups: {result.Duplicates.Count}", true); Log($"Total files: {result.TotalFiles}", true); Log($"Total compared files: {result.TotalComparedFiles}", true); Log($"Total file bytes: {result.TotalBytesInComparedFiles}", true); Log($"Total read bytes: {result.TotalReadBytes}", true); }
private static void Perf(IDupDetector dupDetector, int workers, string folder, int times) { var files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories); var timer = new Stopwatch(); List<Duplicate> result = null; if (times <= 0) times = 10; timer.Start(); for (var i = 0; i < times; i++) { result = dupDetector.Find(files, workers); } timer.Stop(); Log(string.Format("dup method: {0}, workers: {1}, groups: {2}, times: {3}, avg elapsed: {4}", dupDetector, workers, result.Count, times, TimeSpan.FromMilliseconds(timer.ElapsedMilliseconds / times))); }
private static void Run(IDupDetector dupDetector, int workers, string folder) { var files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories); var result = dupDetector.Find(files, workers); Log("dup groups:" + result.Count); foreach (var dup in result) { var dupItems = dup.Items.OrderByDescending(f => f.ModifiedTime); var latestItem = dupItems.First(); Log("\tlatest one:"); Log(string.Format("\t\t{0}", latestItem.FileName)); var remainingItems = dupItems.Skip(1).ToArray(); Log(string.Format("\tdup items:{0}", remainingItems.Count())); foreach (var item in remainingItems) { Log(string.Format("\t\t{0}", item.FileName)); } Log(string.Empty); } }
private static void Perf(IDupDetector dupDetector, int workers, string folder, int times) { var files = Directory.GetFiles(folder, "*.*", SearchOption.AllDirectories); var timer = new Stopwatch(); DupResult result = default; if (times <= 0) { times = 10; } timer.Start(); for (var i = 0; i < times; i++) { result = dupDetector.Find(files, workers); } timer.Stop(); Log(string.Format("Dup method: {0}, workers: {1}, groups: {2}, times: {3}, avg elapse: {4}", dupDetector, workers, result.Duplicates.Count, times, TimeSpan.FromMilliseconds(timer.ElapsedMilliseconds / times)), true); }