EugeneRoshal
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору insorg Цитата: Зачем дополнительный? При открытии архива вполне логично получать полный его листинг, тем более как без этого узнать содержимое архива... | Для распаковки обычного rar архива без ссылок нам не нужен его полный листинг. Мы идем от одного заголовка файла к другому и обрабатываем файлы по мере обнаружения. Но такой подход не работает, если мы встретили 2.txt, который нам надо распаковать, и он ссылается на 1.txt, который мы уже пропустили раньше. Тут нужно или предварительное сканирование заголовков для обнаружения таких пар перед распаковкой, или дополнительный проход для распаковки только таких файлов. Так как мы не знаем, встретятся ли нам в архиве ссылки, предварительное чтение всех заголовков придется выполнять для любых архивов, не только со ссылками. Возможно, 7-Zip так и поступает, что позволяет ему распаковывать отдельные ссылки и оптимизировать распаковку отдельных файлов внутри solid блоков. Но это замедлит распаковку любых RAR архивов на время чтения всех заголовков. Замедлит не особо значительно, но тут надо учитывать малую распространенность архивов со ссылками и с множеством solid блоков по сравнению со всеми остальными. Цитата: WinRAR и так достаточно долго (по сравнению с 7z или zip с таким же составом архива) открывает архивы. Особенно не-solid. На медленных хардах и сетевых дисках заметно. Потому я не вижу существенной потери в том, чтобы дополнительно за этот же проход чтения составить порядок следования файлов. | Если вы про чтение заголовков, так наоборот для архивов типа rar без гарантированной central directory, хранящей все заголовки в конце архива, дополнительный проход обойдется дороже, так как потребует больше перемещений внутри архива. Но у central directory есть своя цена. Если она дублирует локальные заголовки, она увеличивает размер архива. Если она является единственным источником информации о файлах, она делает архив более уязвимым к повреждениям, так как информация о файлах не распределена по архиву, а хранится в одном месте. Поэтому в RAR5 это реализовано опционально в варианте дублирования заголовков как "Quick open information" . |