Bzip2 forrásfájl beágyazott eszközhöz

 ( log69 | 2018. február 8., csütörtök - 9:37 )

Sziasztok,

32 bites mikrochip-en akarok bzip2-vel tömöríteni. Sima zip-re találtam kódot, de annál nagyobb tömörítése kell, ezért a bzip2. Előbbi kb. 37%-ra nyomja le az adatot, utóbbi 16%. Előbbi <2 MB residens mem-et használ futáshoz, utóbbi <8 MB.

Egyetlen szál C forrás fájlt keresek, amelyhez nem kell külön header fájl vagy egyéb lib. Zip-hez van egy ilyen, egy ilyesmit keresek bzip2-hez:

https://paste.ubuntu.com/26539770/

Ötlet? Kösz.

Hozzászólás megjelenítési lehetőségek

A választott hozzászólás megjelenítési mód a „Beállítás” gombbal rögzíthető.

Vagy tudnátok-e ajánlani bzip2 helyett valamit, ami beágyazott eszközre van és jobban tömörít? Köszi.

Egyébként megnéztem sok tömörítőt (zpaq, lrzip, xz, zstd stb), de az adat típusomra bzip2 tömörít a legjobban és nagyságrenddel kevesebb memória kell neki.

Ha foleg kitomoritesz, akkor brotli-t erdemes kiprobalnod.

Egyebkent:
https://landley.net/code/micro-bunzip.c
https://landley.net/code/bunzip-4.1.c

Betömörítéshez kellene. Látom pont betömörítéshez nem tett fel kódot az általad linket arc, mert akkor tesztelném majd.

Lesz elég ram-od hozzá?

Ez jó kérdés, lehet hogy nem. 8 MB rezidens mem használatot mértem --best opcióval bzip2-nél, nekem fél megám lesz úgy néz ki, ezért az is kérdés hogy tudom-e limitálni a memória erőforrást a betömörítésnél.

Más algo-t találtam sokat ahol lehet limitálni, sőt pár byte-on túl nem is kell, de azoknál a fenti 1/3 rátájú tömörítés van. Ennél jobban össze akarom nyomni az adatot.

Az adat átalakításával is kísérleteztem, de maradtak az arányok.

Időd az van? (vagy a betömörítésnek gyorsnak is kell lennie, mert mondjuk akkuról megy az eszköz)

Tömörítendő adatok titkosak? Nem lehetne feltenni valahova? Lehet hogy egy tömörebb adatstruktúrát kellene kialakítani. Például bzip2 bwt-t használ a könnyebb tömöríthetőség miatt, nálad lehet az segít.

Akksi kímélő kell és majd megnézem, de így lehet hogy kevesebbet fog enni a wifi chip a hosszabb (max +20-30%?) feltöltéssel mint hogy a proci tömörítsen egy nagyot. Tehát valóban, inkább akksit akarok kímélni.

Akkor minél kevesebbet számoljon az a chip!
Egyébként meg vizsgáld meg, hogy nem lehet e egyéb, nem általános tömörítést alkalmazni.
Pl hőmérséklet értéket fölösleges egy byte-on továbbítani, ha lehet 6 vagy 7 biten is ábrázolni (és van egyéb, továbbítandó adat).

Kösz, majd megnézem. Még 1-2 hét míg ki tudom próbálni.

Megneznem a libszl-t (haproxy low memory footprint tomoritoje), hatha.

Szep a forrasa, piszkosul nem ker ramot, es hangyanyival tomorit benabban.

kösz.

Mármint libslz, nem?

+1 :D