https://bugs.kde.org/show_bug.cgi?id=503364

Azhar Momin <azhar-mo...@outlook.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |azhar-mo...@outlook.com

--- Comment #3 from Azhar Momin <azhar-mo...@outlook.com> ---
I think K7Zip extracts the whole archive up front because 7z uses solid
compression (https://en.wikipedia.org/wiki/Solid_compression#Costs) i.e,
multiple files can be packed into a single compressed block (or "folder"), so
to get one file, you often need to decompress the entire block it’s in. This
makes lazy loading a bit tricky.

That said, the 7z format does support splitting archives into smaller solid
blocks. So in theory, K7zip could be smarter: instead of extracting everything
in open(), it could defer that and just decompress the relevant block when
K7ZipFileEntry::data() is called.

I’d actually be interested in trying to implement something like that, if only
the 7z format had proper official documentation.

A simpler option though might be to add API like
K7Zip::setFlags(K7ZIP_DO_NOT_DECOMPRESS) or something, so users can choose
whether they want just the entry list or full data up front. That would help
apps avoid the big memory hit just for listing files.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to