Ho un oggetto che sto cercando di comprimere. È di formaProblemi con la compressione in javascript
[
{
array
string
},
{
array
string
},
...
]
Gli array sono non più di 10-15 lunghezza, estremamente piccolo in confronto alle corde (sono html, approssimativamente 170k in lunghezza). Le stringhe sono di solito ripetute, o hanno enormi quantità di sovrapposizione. Quindi la mia intuizione mi dice che il valore compresso dovrebbe essere il valore di compressione di 1 stringa, più un piccolo extra.
I JSON.stringificare questo oggetto e provare a comprimere.
La maggior parte delle librerie di compressione ha fatto un brutto lavoro di compressione delle stringhe, dal momento che il server mi invia una versione compressa gzip di 77kb, so che può essere almeno così piccola.
gzip-js
lzma-js
fatto un buon lavoro fuori dai forse 15 librerie che ho provato.
Il problema è gzip-js è lineare nel numero di stringhe. Ma lzma lo fa correttamente, dove aumenta leggermente di dimensioni.
Lzma-js (livello 2) è molto lento, sfortunatamente (20s vs 1s gzip) durante la compressione di 7mbs (circa 30 ~ stringhe).
C'è una libreria di compressione qui, che è approssimativamente veloce come gzip, ma non si scala linearmente sulle stringhe di ripetizione?
Puoi elencare quelli che hanno fatto un brutto lavoro che hai provato?Risolverà sicuramente il tempo di reset di noi per non dover fare lo stesso lavoro che hai già fatto. –
Hai guardato le risposte a http://stackoverflow.com/questions/4570333/string-compression-in-javascript? I link di risposta più votati a questa pagina http://pieroxy.net/blog/pages/lz-string/index.html, che fa riferimento a qualche lib di compressione lz –
Se hai del tempo puoi convertire i bit in immagine (ogni 3 bit come bixel) e salvarlo come immagine png lossless, le migliori prestazioni con una compressione molto buona –