Startseite < Informatik < Algorithmen < Sortieren [ DRUCK , 2004 , 2005 , 2006 , 2007 , 2008 , 2009 ] Komprimieren < RLE Huffman Lempel-Ziv > Suchen / Primzahltest > Datenstrukturen / Software-Engineering / Programmiersprachen / Künstliche Intelligenz > Schach Privates / Inhalt >
Komprimieren
Wie können Dateien vorübergehend verkleinert werden?
Definitionen Definitionen zum Thema Komprimieren
Kompression
Als Kompression bezeichnet man ein Verfahren, bei dem der Umfang einer Datei oder einer Nachricht mit Hilfe von speziellen Algorithmen reduziert wird. Zum Beispiel können Zeichenfolgen, die sich in einer Datei wiederholen, zusammengefasst werden.

Der Sinn und Zweck einer Datenkompression liegt auf der Hand:
  1. Speicherplatzersparnis
    Damit selten benutzte Dateien nicht so viel Speicherplatz belegen, sollten diese komprimiert werden. Bei Bedarf können die komprimierten Dateien wieder dekomprimiert werden.
  2. Zeit- bzw. Kostenersparnis bei der Datenübertragung
    Die Übertragung von kleinen Dateien beansprucht nicht so viel Zeit wie die Übertragung von großen Dateien. Aus diesem Grunde ist es ratsam, große Dateien zu komprimieren, um schließlich die kleineren komprimierten Dateien mit geringerem Zeitaufwand und somit kostengünstiger übertragen zu können.
Kompressionsfaktor
Mit dem Kompressionsfaktor wird das Verhältnis zwischen der Originaldatei und der komprimierten Datei bezeichnet. Beispielsweise ist bei einem Kompressionsfaktor von 2 die komprimierte Datei nur halb so groß wie das dazugehörige Original.
Verlustfreie Kompression
Ein Kompressionsverfahren wird als verlustfrei (engl.: lossless) bezeichnet, wenn nach der dazugehörigen Dekompression wieder die Originaldatei zum Vorschein kommt.
Der Kompressionsfaktor bei einer verlustfreien Kompression kann etwa zwischen 5 und 10 liegen.
Verlustbehaftete Kompression
Im Gegensatz zur verlustfreien Kompression, gibt es die verlustbehaftete (engl.: lossy) Kompression, die in der Regel bei Bilddateien sowie Musik- und Videodateien eingesetzt wird, um einen erheblich höheren Kompressionsfaktor zu erreichen. Dabei begnügt man sich mit einer schlechteren Bild- bzw. Tonqualität. Als typisches Beispiel für verlustbehaftete Kompression von Bilddateien steht das JPEG-Bildformat.
Der Kompressionsfaktor bei einer verlustbehafteten Kompression kann etwa zwischen 50 und 250 liegen.
Minifikation
Die Minifikation (engl.: minification) ist eine besondere Art der Kompression, mit welcher Quelltexte in äquivalente, verkürzte, jedoch unleserliche Darstellungen überführt werden. Eine Dekompression ist in diesem Fall nicht nötig, da ein minifizierter Code äquivalent zum Original ist, was die Funktionsweise angeht.

Typische Methoden der Minifikation sind:
  • Eliminierung aller Kommentare
  • Eliminierung von überflüssigen Leer-, Tabulaturzeichen und Zeilenumbrüchen
  • Minimierung mittels Umbenennung oder mittels Refaktorisierung mnemonischer Bezeichner in kürzestmögliche, kryptische Strings (betroffen sind vor allem lokale Variablen, lokale Konstanten und private Klassen)
  • Minimierung mittels Redesign verborgener Hilfskonstruktionen (Entwurfsmuster können meist kürzer gestrickt werden)
Generell ist bei der Minifikation alles erlaubt, was den Code kürzer macht, wenn dabei nicht die API verändert wird.

Für die Minifikation eignen sich jegliche Arten von Programmiersprachen, was zum Beispiel auch vektororientierte Formate miteinschließt. In der Praxis wird die Minifikation hauptsächlich für JavaScript-Dateien verwendet, um den Datentransfer zu optimieren (geringeres Transfervolumen, geringere Downloadzeiten). Ferner können mit der Minifikation auch client-seitige Parsing-Zeiten verringert werden.