You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This PR has solutions for #43 and #45
Freezing a browser tab happened when decompressed data could be large. For example, when compressed file has 10MB, but decompressed data has 98MB.
Since real decompressed data size is not known, as the solution is to take a average compressed ratio according to the example of compressed file of 10 MB and realize inital memory for (size of compressed file * compressed ratio)MB. Drawback is that the more decompressed data is the slower archive_read_data method is itself.
Maybe some ideas for handling larger archives, I had these already two weeks before, but they were not necessary.
Instead of a single wasm function, that decompresses the whole archive, you can divide the function into three parts:
(i) Initializing the libarchive for the archive and setting up other datastructures (basically the part before for the loop through the archive).
(ii) A function that processes a single file, or a bunch of files (may be limited by a number or maximum number of occupied memory). This function can then be called in a loop from javascript, copying over the results to the destination.
Maybe you can recycle some of the memory for the files in the next turn.
(iii) A cleanup function., that closes all objects allocated and opened in (i) and maybe in (ii)
Of course, you could put it into a ReadableStream, as this is how webstreams work.
The benefit would be that you can potentially decrease the memory of the Wasm build, allocate a smaller size of intermediate memory buffers, and overall, run the whole setup in less powerful devices.
Maybe some ideas for handling larger archives, I had these already two weeks before, but they were not necessary. Instead of a single wasm function, that decompresses the whole archive, you can divide the function into three parts: (i) Initializing the libarchive for the archive and setting up other datastructures (basically the part before for the loop through the archive). (ii) A function that processes a single file, or a bunch of files (may be limited by a number or maximum number of occupied memory). This function can then be called in a loop from javascript, copying over the results to the destination. Maybe you can recycle some of the memory for the files in the next turn. (iii) A cleanup function., that closes all objects allocated and opened in (i) and maybe in (ii)
Of course, you could put it into a ReadableStream, as this is how webstreams work. The benefit would be that you can potentially decrease the memory of the Wasm build, allocate a smaller size of intermediate memory buffers, and overall, run the whole setup in less powerful devices.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR has solutions for #43 and #45
Freezing a browser tab happened when decompressed data could be large. For example, when compressed file has 10MB, but decompressed data has 98MB.
Since real decompressed data size is not known, as the solution is to take a average compressed ratio according to the example of compressed file of 10 MB and realize inital memory for (size of compressed file * compressed ratio)MB. Drawback is that the more decompressed data is the slower archive_read_data method is itself.
