Latest post of the previous page:
А это что-то изменит?
Code: Select all
class Program
{
static void Main(string[] args)
{
var sourcePath = args[0];
var targetPath = args[1];
var size = 0L;
var count = 0;
var sync = new object();
var watch = Stopwatch.StartNew();
var files = new DirectoryInfo(sourcePath).EnumerateFiles("*", SearchOption.AllDirectories);
Parallel.ForEach(files, new() { MaxDegreeOfParallelism = 32, },
file =>
{
var source = file.FullName;
var relative = source[sourcePath.Length..];
var target = @$"{targetPath}\{relative}";
var targetDir = Path.GetDirectoryName(target);
Directory.CreateDirectory(targetDir);
File.Copy(source, target, true);
lock (sync)
{
count++;
size += file.Length;
}
});
watch.Stop();
Console.WriteLine($"Finished: {watch.Elapsed}, {count}, {size}, {size / watch.Elapsed.TotalSeconds}");
}
}
Для сравнения, фар на тех же данных потратил 62 секунды. Медленнее в 4.88 раза.