Live data from Hacker News

Zip.js - A JavaScript library to zip and unzip files

gildas-lormeau.github.com

1–10 of 25 posts

Re: Zip.js - A JavaScript library to zip and unzip files

#3
post #2

Pretty cool, but the thought of inflate/deflate running in Javascript makes me cringe. How fast is this?

Edit: The numbers are only for the C implementation so they don't add much to the discussion. Sorry for posting too quickly!

I don't know about this library in particular, but there's some numbers available on http://liblzg.bitsnbites.eu/ for a similar library.

(The same author has also made a library for self extracting javascript code: http://crunchme.bitsnbites.eu/. Pretty cool, but probably not that useful outside of the demo scene.)

Re: Zip.js - A JavaScript library to zip and unzip files

#4
post #2

Pretty cool, but the thought of inflate/deflate running in Javascript makes me cringe. How fast is this?

While I haven't used this in production, I can say that for zipping up stuff that was already generated client side it is usually quicker than sending the data to the server to be zipped, then getting it back. While this seems like a just-because-its-cool sort of hack, it actually has awesome implications. Zipped file creation from offline apps? Yes please.

Re: Zip.js - A JavaScript library to zip and unzip files

#7
post #5

Anyone know of a Javascript implementation of Snappy? There's a binding for Node, but not a Javascript implementation which would be useful in the browser considering IndexedDB and Websockets support binary data.

No, but I've been using an LZMA library [1] to compress data sent over binary WebSockets.

LZMA is nice for streaming data to many clients (i.e. compress once, decompress many times), because although compression time/CPU is high (LZMA > BZIP2 > GZIP), compression ratio is very good (LZMA > BZIP2 > GZIP) and decompression not too bad (BZIP2 > LZMA > GZIP) [2].

[1] http://code.google.com/p/js-lzma/

[2] Disclaimer: I should check, but haven't yet, whether these inequalities hold for this JS LZMA implementation relative to the available GZIP and BZIP2 ones.

Re: Zip.js - A JavaScript library to zip and unzip files

#8
Also check out: http://jszip.stuartk.co.uk/

I used it a week ago for a simple project (a kinda secure file system - with PHP and MongoDB for backend). I would encrypt a file on my server (AES) and then send the encrypted data to user's browser. Then I could decrypt the data with JavaScript and used JSZip to make user's browser download the decrypted files.

Re: Zip.js - A JavaScript library to zip and unzip files

#9
post #2

Pretty cool, but the thought of inflate/deflate running in Javascript makes me cringe. How fast is this?

I just tested with a 42 MB text log file under OS X 10.7.2.

Using zip 3.0:

    $ time zip logfile.zip logfile.log

    adding: logfile.log (deflated 89%)

    real	0m1.170s
    user	0m0.947s
    sys	0m0.030s
Resulting file size: 4,551,020 bytes

Using Chrome 16.0.912.77:

    4.7s - 1st drop
    5.5s - 2nd drop
    5.2s - 3rd drop
    5.1s - 4th drop
    Average 5.125s
    (timed using stopwatch)
Resulting file size: 4,547,885 bytes

Size: Advantage Zip.js by 3,135 bytes (roughly 3k; 6.8% better than zip) Speed: Advantage zip by 3.955s (77% better than Zip.js)

Re: Zip.js - A JavaScript library to zip and unzip files

#10
post #6

I am the author of the library. Just to be clear about my motivations, I wrote this library for chrome extensions. It's a simple way to export/import large user data.

Can you tell us why you don't rely on built-in compression? I would guess both local storage and HTTP POST automatically compress files... is this not the case?
Post reply on HN