EugeneRoshal
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору uShell Цитата: Хочу, однако, отметить, что второй проход можно упростить при наличии оглавления в Rar5-архиве. Предлагаю такую оптимизацию: если WinRAR знает (например, закэшировал заголовок), что единственный извлекаемый файл не имеет флага solid, то распаковывать нужно только его, а не весь архив с начала. | Я думал об этом, но это довольно много работы и кода ради частного случая, так что пока не знаю, решусь ли когда на реализацию. Тут с томами непонятно что делать. Если распаковываемый файл находится не в первом томе, нам неизвестно, закэширован ли он. То есть придется пробежаться по всем томам, почитать все кэши заголовков, они же quick open information (-qo). А это тоже приличная задержка, причем для каждой распаковки отдельного файла из solid томов. Есть там сброс статистики, не там сброса, а задержка добавится. Я уж не говорю про ситуацию, когда тома на сменных носителях. Если же для томов этот алгоритм мы не применяем, частный случай становится еще более частным. Ведь по умолчанию RAR добавляет записи в кэш только для больших файлов, а не для всех, и не факт, что сброс статистики попадет на запись в кэше. Эту функцию было бы легче реализовать при гарантированном хранении всего оглавления в конце последнего тома в стиле zip, но у такого формата есть свои недостатки, и rar так не делает. Цитата: очевидно, при виде solid-флага у файла активируется распаковка с начала вне зависимости от заголовка архива | Не уверен, что RAR в таком архиве корректно отработает распаковку файла из середины, а не с начала архива. Впрочем, это представляет только теоретический интерес. |