incoming now has optional LZ4 compression for file packages. What this lets
you do is pre-compress your filesystem data, and keep it compressed in
memory, and only decompress chunks on demand as they are read. This means
that you can reduce the total amount of memory used by your application.

LZ4 ( https://en.wikipedia.org/wiki/LZ4_%28compression_algorithm%29 ) is a
very fast compression algorithm. In my benchmarks it makes little
difference to I/O speed, and in general I/O from our in-memory filesystem
is fast anyhow since it's already in memory. So the downside of needing to
decompress seems small, I don't see much difference in BananaBread startup,
for example, with or without LZ4 compression.

Of course how useful this is depends on how compressible your data is. LZ4
can compress text very well, but often data in things like games is already
compressed, like compressed textures and audio. Still, I saw 10%-25%
compression on a few games I tried.

Feedback and testing are very welcome. Some docs are at

https://github.com/kripken/emscripten/blob/71bf8ed55ed03a96a018f76bf2003acf32db3235/src/settings.js#L250

but basically just run emcc with  -s LZ4=1 . (If you run the file packager
separately, you need to also pass  --lz4  to it.)

- Alon

-- 
You received this message because you are subscribed to the Google Groups 
"emscripten-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to