![]() |
Re: Effiziente Kompressionsverfahren
Zitat:
Dust Signs |
Re: Effiziente Kompressionsverfahren
@Dust Signs: Bitte zitiere doch nur den Teil des Beitrags, den du für deine Stellungnahme auch benötigst, das liest sich deutlich besser, danke.
Zitat:
Ich denke allerdings auch, dass Schnelligkeit und eine hohe Kompression einen Widerspruch darstellen. Je besser die Kompression, desto länger dauert das Komprimieren. Zumindest habe ich es bei den Kompressionsprogrammen, die ich nutze so festgestellt. |
Re: Effiziente Kompressionsverfahren
Zitat:
Wo wir schon dabei sind, darf ich wieder mit meinen obligatorischen non-PC-Plattformen kommen? :stupid: Man könnte ja Kompressionsalgorithmen in Hardware gießen, idR schneller als auf einem RISC ;-) |
Re: Effiziente Kompressionsverfahren
Liste der Anhänge anzeigen (Anzahl: 1)
@Dust Signs: Ich habe das 'schnell' schon gelesen. RAR ist schon ok, schneller als die mir vorliegende zlib-Version, soweit ich mich erinnere. Natürlich nicht so schnell wie PKZIP, aber ausreichend. Da die Kompressionsrate von RAR jedoch unerreicht ist, kommt RAR für mich als perfekter Kandidat in Betracht. Aber, das ist Geschmacksache. Wichtig war mir, das hier Dinge gepostet werden, ohne sie mal nachzuprüfen.
Von der Schnelligkeit her würde ich LZW Verfahren nehmen. Das ist sauschnell. Aber eben nicht sonderlich effizient. Probier das hier mal aus. Das ist zwar nur Delphi (kein ASM), aber geht wirklich ab wie Sau. Vielleicht reicht es Dir ja. Ich habe auch den LZH Code als Delphi-Version probiert. Aber der ist einfach zu langsam. |
Re: Effiziente Kompressionsverfahren
Hallo zusammen,
danke erstmal für die rege Beteiligung! :thumb: Zitat:
Zitat:
Zitat:
Zitat:
Bisher dachte ich jedenfalls, Delphi langt von der Performance her knapp an C(++) heran. Zitat:
Gruß, Marco |
Re: Effiziente Kompressionsverfahren
Liste der Anhänge anzeigen (Anzahl: 1)
Was PKZIP und zlib anbelangt, darfst Du nicht vergessen, das der gute Phillip Katz ('PK') sich einen abgebrochen hat, damit sein Tool die #1 wird. Also hat er optimiert, was das Zeug hält. Zlib ist 'nur' eine normale ASM-Implementierung, die natürlich noch Optimierungspotential hat. Beim LZW-Algorithmus z.B. gibt es ein Wörterbuch, das immer weiter wächst. Irgendwann wird es zu gross und muss 'bereinigt' werden. Ich meine, das PkWare das genaue WIE und WANN der 'Dictionary-Reinigung' nicht verraten. Gerade DAS macht aber noch einige Prozente in der Komprimierungsrate aus.
Die Geschwindigkeit von zlib hat m.E. nichts mit Delphi vs. C(++) zu tun, sondern mit Algorithmen und Optimierungen: "Ein BubbleSort in ASM ist immer langsamer als ein Quicksort in JavaScript." (Gut, bei mehr als 1000 Elementen :-D ) Teste einfach mal zlib. Ich weiss nicht, welche Version Du hast. Ich habe die hier und mir reichts (ich wiederhole mich) |
Re: Effiziente Kompressionsverfahren
Zitat:
read you, Dax |
Re: Effiziente Kompressionsverfahren
|
Re: Effiziente Kompressionsverfahren
Ach Heinz ;) Wie Die Huffman-Kodierung funktioniert weiß ich :) Ich wollt aber was zu adaptive Variante erfahren, und dazu hab ich nix gefunden :?
|
Re: Effiziente Kompressionsverfahren
Liste der Anhänge anzeigen (Anzahl: 1)
Ich wollte Dir nix Böses :oops:. Es geht ja bei Verfahren erst in zweiter Linie ums Optimieren. Wenn das Verfahren nicht stimmt, dann bringt 'Optimieren' hier auch Nichts. Deine Hufman-Implementierung is ordendlich, darauf kommt es an. Allerdings sollte man schon mal Vergleiche mit in freier Wildbahn auftretenden Packern machen, bevor man euphorisch die Implementierung des Hufman feiert. Aber egal.
Ich habe leider keine akkuraten Beschreibungen oder Listings zum RAR-Verfahren. Das LZH-Verfahren kann ich Dir geben... Der 'Nachteil' vom von Dir implementierten 'statischen' Huffman Codiung ist: 1. Du musst den KodierungsBaum mitschicken. 2. Du berücksichtigst die Verteilung der Bytes nur in der gesamten Datei. So, wie ich das verstanden habe, fängt der 'adaptive Hufman' mit einem standardisierten Kodierungsbaum an (Es gibt ein Listing für UNRAR, da steht er drin). Somit entfält Nachteil #1. Dann wird während des Kodierens der Kodierungsbaum immer wieder überarbeitet, um die aktuelle Bytehäufigkeit zu berücksichtigen. Somit entfällt Nachteil #2. Vermutlich stecken noch ettliche kleine 'Optimierungen' drin, um auf diese Kompressionsraten zu kommen: Trivial ist das nämlich nicht. Am Spannendsten finde ich jedoch die Markov-Verfahren, die doch tatsächlich darauf aufbauen, das nächste Byte zu 'erraten'. Das klappt sogar. Unglaublich. Leider auch extrem langsam. Hier das LZH-Verfahren (Ziemlich laaaangsam) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:28 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz