mirror of
https://github.com/0x5eal/rbxts-pako.git
synced 2025-04-11 14:21:02 +01:00
112 lines
No EOL
2.3 KiB
Markdown
112 lines
No EOL
2.3 KiB
Markdown
pako - zlib port to javascript, very fast!
|
|
==========================================
|
|
|
|
[](https://travis-ci.org/nodeca/pako)
|
|
|
|
__Why pako is cool:__
|
|
|
|
- Almost as fast in modern browsers as C implementation (see benchmarks)
|
|
- Works in browser
|
|
- Modular - you can browserify any separate component
|
|
- Both Sync & streamable interfaces (streamable is for big blobs)
|
|
- It's fresh - ports the latest zlib version (now 1.2.8)
|
|
- Tested - result is binary equal to zlib's one
|
|
- No restrictions - MIT licence
|
|
|
|
__Benchmarks:__
|
|
|
|
|
|
```
|
|
node v0.11, 10mb sample:
|
|
|
|
deflate-gildas x 2.82 ops/sec ±1.21% (11 runs sampled)
|
|
deflate-imaya x 2.25 ops/sec ±0.59% (9 runs sampled)
|
|
! deflate-pako x 6.09 ops/sec ±0.98% (19 runs sampled)
|
|
deflate-zlib x 9.13 ops/sec ±0.92% (46 runs sampled)
|
|
|
|
node v0.11, 10mb sample:
|
|
|
|
deflate-gildas x 3.39 ops/sec ±6.58% (12 runs sampled)
|
|
deflate-imaya x 2.14 ops/sec ±4.29% (9 runs sampled)
|
|
! deflate-pako x 6.61 ops/sec ±0.66% (20 runs sampled)
|
|
deflate-zlib x 9.28 ops/sec ±1.98% (47 runs sampled)
|
|
```
|
|
|
|
__Install:__
|
|
|
|
node.js:
|
|
|
|
```
|
|
npm install pako
|
|
```
|
|
|
|
browser:
|
|
|
|
```
|
|
bower install pako
|
|
```
|
|
|
|
|
|
Example & API
|
|
-------------
|
|
|
|
```javascript
|
|
var pako = require('pako');
|
|
|
|
//
|
|
// Deflate
|
|
//
|
|
|
|
var input = new Uint8Array();
|
|
//... fill input data here
|
|
var output = pako.deflate(input);
|
|
|
|
//
|
|
// Inflate
|
|
//
|
|
|
|
var compressed = new Uint8Array();
|
|
//... fill data to uncompress here
|
|
var result = pako.inflate(compressed);
|
|
if (result.err) {
|
|
console.log(result.err, result.msg);
|
|
}
|
|
var uncompressed = result.data;
|
|
|
|
```
|
|
|
|
See docs for full API specs.
|
|
|
|
|
|
Notes
|
|
-----
|
|
|
|
Since pako was done mostly for browser, some specific functions were left unported.
|
|
|
|
deflate:
|
|
|
|
- writing custom gzip headers (default is ok)
|
|
- `deflateSetDictionary`, `deflateParams`, `deflateSetHeader`, `deflateBound`, `deflatePending`
|
|
|
|
inflate:
|
|
|
|
TBD
|
|
|
|
We will probably provide more modular design, to keep significant part of code reasonably small.
|
|
|
|
|
|
Authors
|
|
-------
|
|
|
|
- Andrey Tupitsin [@anrd83](https://github.com/andr83)
|
|
- Vitaly Puzrin [@puzrin](https://github.com/puzrin)
|
|
|
|
Personal thanks to Vyacheslav Egorov ([@mraleph](https://github.com/mraleph)) for
|
|
his awesome tutoruals about optimising JS code for v8, [IRHydra](http://mrale.ph/irhydra/)
|
|
tool and his advices.
|
|
|
|
|
|
License
|
|
-------
|
|
|
|
MIT |