Использование -v (многословно) замедляет команды?

В этом вопросе: Как удалить все файлы и подкаталоги в каталоге БЕЗ удаления каталога в bash? спрашивается, как удалить весь файл в папке, а не саму папку.

Отличный ответ Matt включает использование флага -v для команды 'rm'.

rm -rfv dontDeleteMe && mkdir dontDeleteMe

Команда, которую я оставил, была выше. Конечно, действительно полезно, но разве флаг -v в 'rm' и / или вообще замедляет задачи, выполняемые через командную строку?

У меня есть папка с.txt-файлами (их около 100000), которые я несколько раз создавал, удалял и воссоздавал для себя. Иногда с rm, иногда в браузере файлов, и я чувствую, что использовать команду rm еще медленнее, как показано выше. Флаг -v имеет какое-либо отношение к этому?

2 ответа

Решение

Да, флаг -v замедляет команду.

Большинство, если не все программное обеспечение (или команды) проверит наличие флага, а затем выполнит связку кода, связанную с этим флагом. В случае флага -v они, скорее всего, будут выполнять несколько команд вывода (например, echo или же printf), который они предпочли бы пропустить без флага.

Это означает больше циклов команд для процессора и, следовательно, больше времени выполнения.

Лучше, если вы не используете флаг -v, если вы не собираетесь читать / нуждаться в сообщениях.

С другой стороны, CLI будет / должен быть быстрее, чем GUI, при условии, что вы не включаете время, необходимое для ввода команд, и нажимаете клавишу Enter.

Из этого блога суперпользователя это изображение очень хорошо объясняет медлительность

введите описание здесь

Для конкретной рассматриваемой команды результаты команды времени

//with -v
real    0m8.753s
user    0m0.816s
sys     0m2.036s

//without -v
real    0m1.282s
user    0m0.124s
sys     0m1.092s

это было сделано с каталогом, содержащим 100000 пустых файлов

Почему бы не узнать себя: использовать время.

$ time rm -rfv dontDeleteMe && mkdir dontDeleteMe
real    0m0.003s
user    0m0.001s
sys     0m0.002s

$ time rm -rf dontDeleteMe && mkdir dontDeleteMe
real    0m0.002s
user    0m0.001s
sys     0m0.001s
Другие вопросы по тегам