ZIP-файл извлекается быстрее, чем копирование

Система Win 7 32 битная. Я использую WinRAR для извлечения файла.rar, но я думаю, что это то же самое для любых заархивированных файлов. Я имею:

1) SomeSourceCodeFolder.rar -> extract -> SomeDestCodeFolder

2) SomeSourceCodeFolder -> copy -> SomeDestCodeFolder

1-й способ в целом намного быстрее, чем 2-й. В моем случае при копировании папки с кодом 300 МБ написано 45 минут (что я ждал только 5 минут, не удосужившись завершить ее), но когда я пытаюсь сделать то же самое с извлечением winRAR, для завершения требуется всего около 45 секунд.,

Это почему? Разве заархивированные файлы не проходят через расшифровку + копирование в файловую систему? не должно ли это быть всегда медленнее, чем копирование в одиночку?

1 ответ

Решение

Это прекрасно подходит для определенного оборудования: быстрый процессор, медленный диск (HDD, а не SSD), всего один диск.

Данные должны быть прочитаны и записаны. Количество записанных данных одинаково в обоих случаях, но чтение сжатого файла означает, что нужно прочитать меньше данных. Кроме того, обычно гораздо быстрее читать один большой файл, чем читать каталог. Этот эффект больше, если есть много маленьких файлов. Вы можете уменьшить его, считав структуру каталогов в кэш, так что диск не должен переходить между инодами и блоками данных:

# Edit: This works under Unix only
find /dir/to/be/copied -printf "" # just read the names
find /dir/to/be/copied -perm 777 -printf "" # just read the inodes

Если процессор не замедляет ввод данных (потому что дефляция занимает больше времени, чем чтение), тогда извлечение происходит быстрее, чем копирование.

Если вы вместо этого копируете с SSD на другое устройство, а ваш процессор из каменного века, то копирование будет быстрее.

Другие вопросы по тегам