wahl eines kompressionsalgorythmus/library
-
hi leute, ich habe eine menge an daten, die ich komprimieren wollte, um die zugriffszeit auf die festplatte kurz zu halten.
so habe ich 3,5 gb in 1500 dateien mit dem bzip2 algorythmus auf 194 drückn können. das war noch besser als wenn ich die dateien händisch packe, weil ich die blocksize noch optimiert habe. allerdings habe ich son bissel das gefühl, dass ich nicht soviel gutmache, weil die dekompression etwas länger dauert.hat da überhaupt mal jemand erfahrungen gemacht in wie weit man da performance gut machen kann. ich meine das ist sone art null-summenspiel zwischen platte auslesen und cpu-abh. dekompression. am besten wäre der ultimative algo. super kompression und leserate wie unkomprimiert^^ den kennt nicht zufällig einer?
-
uff, neulich habe ich mal einen Link gesehen, wo jemand Dauer und Kompressionsstärke mehrerer Algorithmen verglichen hat. bzip2 hat da eben relativ schlecht abgeschnitten, weil es zwar gut komprimiert, aber ewig braucht. gz ist dagegen recht schnell. Am besten war aber iirc 7z.
-
7z komprimiert gut (heute morgen hab ich, weil jemand kein 7z hatte, etwas als zip gepackt, von 72kb auf 161kb), aber meiner erfahrung nach ist das langsam, sowohl beim decodieren als auch encodieren.
ich benutze winace wenn es schnell gehen soll.eine festplatte duerfte in etwa 40mb/s schaffen, man muss also packer nutzen die schneller sind.
allerdings, wenn man viele kleine dateien hat, ist es eher, zumindestens bei windows, das betriebssystem und die zugriffszeiten was langsam ist. da kann man mit so ziemlich jedem kompressionsformat besser arbeiten, weil immer nur auf der selben datei nach aussen hin gearbeitet wird.es gibt einige .zip implementierungen die sehr schnell sind, nutzt man bei spielen zum streamen.
falls man etwas selbst implementieren will, bietet sich lzss am besten an. hier mal die werte die ich vor kurzem benchmarkte:
compression decompression speicherverbrauch der implementierung Huffman 4.8MB/s 8.1MB/s 2KB LZW 3.5MB/s 10MB/s 16KB LZSS 0.8MB/s 986MB/s <1KB
LZW mit 4k-table, LZSS mit 4k-frame.
als testdatei diente 100 000 000byte von wikipedia, da gibt es im netz so nen datensatz.beste kompressionrate hatte lzw, dann huffman, dann LZSS, aber die werte hab ich nicht mehr im kopf, jedoch ging es mir hauptsaechlich um die dekompressionsgeschwindigkeit.
-
als testdatei diente 100 000 000byte von wikipedia
Also hauptsaechlich Text.