Система Win 7 32 бит. Я использую WinRAR для извлечения файла .rar, но я думаю, что это то же самое для любых заархивированных файлов. У меня есть:
1) SomeSourceCodeFolder.rar -> извлечь -> SomeDestCodeFolder
2) SomeSourceCodeFolder -> копировать -> SomeDestCodeFolder
1-й способ в целом намного быстрее, чем 2-й. В моем случае при копировании папки с кодом 300 МБ он говорит 45 минут (я ждал всего 5 минут, не удосужился закончить его), но когда я пытаюсь сделать то же самое с извлечением WinRAR, для завершения требуется всего около 45 секунд .
Это почему? Разве заархивированные файлы не проходят расшифровку + копирование в файловую систему? Разве это не должно быть всегда медленнее, чем копирование в одиночку?
Это имеет смысл для определенного оборудования: быстрый ЦП, медленный диск (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 на другое устройство, а ваш процессор уже из каменного века, то копирование будет быстрее.