Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Что быстрее: скопировать файлы или разархивировать?

Наверное туповатый вопрос, поскольку по логике разархивация должна быть дольше, тем более если есть сжатие. Но всё же, вдруг не всё так просто как кажется.
Что будет быстрее, скопировать папку с файлами в 1гб, или же разархивировать архив с точно такими же файлами без сжатия.


Ответ

Думаю все дело в I/O записи, что обычно ниже чем чтения
Тесты
~$ du -sh test/ 5.2G test/
Прямое копирование:
~$ time cp -R tmp/ test/ real 0m34.953s user 0m0.084s sys 0m5.110s
Сжатие, копирование, распаковка:
~$ time { tar cf tmp.tar tmp && mv tmp.tar test/ && tar xf test/tmp.tar -C test/; } real 1m1.619s user 0m0.563s sys 0m12.964s
Копирование уже сжатого каталога:
~$ time cp tmp.tar test/ real 0m26.251s user 0m0.028s sys 0m4.557s
Посчитаем колчиество чтения-записи
Для архива:
~$ strace cp tmp.tar test/ 2>&1 | grep -c "read\|write" 55259 ~$ strace cp tmp.tar test/ 2>&1 | grep -c "write" 27623
Для каталога:
~$ strace cp -R tmp test/ 2>&1 | grep -c "read\|write" 70955 ~$ strace cp -R tmp test/ 2>&1 | grep -c "write" 32455
В итоге разница между количеством записей для каталога и пакета вышла 4832, что при копирование на медленный носитель, может значительно увеличить время ожидания.
При хорошем CPU имеет смысл паковать все предварительно перед копированием. 00

Комментариев нет:

Отправить комментарий