1

Сегодня я узнал, что вы можете использовать ключ /mt с robocopy для ускорения передачи файлов. Я пробовал несколько разных опций для /mt:#, включая 1, 8, 17, 30 и 32. Я обнаружил, что 8 (по умолчанию) казалось самым быстрым по любой причине.

Я считаю, что /mt:1 - это то же самое, что не использовать /mt вообще. Но когда я не использую /mt, передача файлов начинается сразу же, и я вижу мгновенную прокрутку текста. Если я использую ключ /mt, независимо от того, поставлю ли я после него число или нет, и любой другой номер, который я использую, если это произойдет, то будет вызван robocopy, и он отобразит оператор robocopy в пакетном файле в течение 5-10 секунд, а затем выполнит (вот когда я наконец вижу текст, указывающий на передачу файла).

Сначала я подумал, что использование параметра /mt означает, что командный файл зависает на несколько секунд, ожидая какой-либо многопоточной службы или чего-то еще. Но я попробовал /mt:1, что должно быть то же самое, что не использовать его, и оно зависает так же, как когда я указываю любое другое число. Единственный раз, когда начинается передача файла, это когда ключ /mt вообще не используется.

Очевидно, я использую /mt, чтобы скрипт работал быстрее. Это займет всего около 20-30 секунд в зависимости от того, используется ли /mt и какое число я использую, поэтому каждая секунда имеет значение, чтобы сделать это быстрее. Как я могу избавиться от задержки, вызванной использованием / MT? Нажатие пробела или ENTER ничего не делают.

Вот что используется:

robocopy "H:\LOS\DefaultCitrix\ChromeCitrix" "%userprofile%\Documents\ChromeCitrix" /e /w:1 /r:4 /mt:8

1 ответ1

1

Обычно, когда что-то становится многопоточным, часть работы передается каждому потоку. Если приложение хочет показать прогресс, оно должно собирать информацию о состоянии каждого потока и показывать его вам. Чем более тонко проработаны детали, тем сложнее процесс, и на самом деле он ничего хорошего не даст вам с точки зрения скорости, чтобы выполнить все эти межпоточные коммуникации.

И наоборот, в однопоточном приложении всю работу можно просто выгрузить на консоль.

Для простоты потоки, вероятно, отчитываются перед пользовательским интерфейсом только после завершения блока работы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .