Multi-threaded копирование

Вам не хватает чего-то в Far? Вы считаете, что вашу идею стоит услышать? Пишите сюда.
CodeMonkey
Posts: 62
Joined: Thu 14 Jul, 2016 11:17
Has thanked: 12 times

Multi-threaded копирование

Post by CodeMonkey »

Latest post of the previous page:

zg wrote: Wed 05 Oct, 2022 21:38 код, используемый для тестирования, можно посмотреть?
А это что-то изменит?

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}");
}
}
Finished: 00:00:12.6822642, 85429, 8852283865, 698005003.3179406

Для сравнения, фар на тех же данных потратил 62 секунды. Медленнее в 4.88 раза.
Last edited by CodeMonkey on Fri 07 Oct, 2022 05:30, edited 1 time in total.
User avatar
citRiks
Posts: 1733
Joined: Fri 25 Oct, 2019 18:18
Has thanked: 610 times
Been thanked: 102 times

Multi-threaded копирование

Post by citRiks »

Хм, моя любимая фича в робокопи это ограничение скорости копирования.
чтобы не забивать весь трафик и/или сеть.
в целом можно и нужно улучшить копирование и в Фаре, наверное
Просто по сравнению со всеми остальными "бедами" Фара, и учитывая сложности разгребания существующего кода копирования, приоритетом в улучшениях это точно не будет, разве что энтузиазм у кого-то проснется вдруг.
Post Reply

Return to “Предложения и идеи”