#linux #tar
Наверное туповатый вопрос, поскольку по логике разархивация должна быть дольше, тем более если есть сжатие. Но всё же, вдруг не всё так просто как кажется. Что будет быстрее, скопировать папку с файлами в 1гб, или же разархивировать архив с точно такими же файлами без сжатия.
Ответы
Ответ 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Ответ 2
Зависит от скорости диска и процессора. При медленном диске (c которого производится чтение) и быстром процессоре может оказаться быстрее разжать из архива, чем скопировать нежатое.
Комментариев нет:
Отправить комментарий