Rewrite of wrappers functions to use the compression method directly
This avoids calling compress and then re-encoding the results in UTF-16, base64 or URIEncoded string.
As a result:
- The
compress
method is slightly slower. - The
compressToUTF16
,compressToBase64
andcompressToEncodedURIComponent
are slightly faster (in theory). - Binary compatibility for decompression is still there. This means any String compressed with an old version of the library can be decompressed by this version, and any String compressed by version 1.4.0 can be decompressed by an older version.
- Binary compatibility for compression is not guaranteed, meaning the output from this version may be different than the output produced by an older version. This is trailing characters that are useless that are now omitted.
The jsperf (Please take them to add more results and help me prove my theory):
http://jsperf.com/lzstring-1-3-8-vs-1-4-0-forcompress/2
http://jsperf.com/lzstring-1-3-8-vs-1-4-0-for-utf16
http://jsperf.com/lzstring-1-3-8-vs-1-4-0-for-base64
http://jsperf.com/lzstring-1-3-8-vs-1-4-0-for-uri-component
NOTE: Releasing this as the performaces seems good except for base64 and uri component on IE. Those don(t take too big of a hit and are designed to send the compressed data to the network (usually internet which is orders of magnitude slower than the compression algo). So I'm going with it.