Verbesserungsvorschlag zum Dateiformat ODF
Verfasst: So, 30.08.2009 02:13
Irgendwie ist eben alles schiefgegangen. Die zwei vorhergehenden Beiträge können bei Bedarf gelöscht werden um doppelte Posts zu vermeiden.
Aber zur Sache.
Da ich von 7-zip und WinRAR weiß, daß 'solid archiving' die
Kompressionsdichte deutlich verbessert, habe ich dieses Konzept mal auf ODF
angewandt. ODF ist ja nichts anderes als ein ZIP-Archiv mit XML-Dateien als
Inhalt. Auf einer Webseite, die ich leider nicht mehr finde, wird dargelegt
warum ZIP zum Einsatz kommt. Aussage der Seite: Es ist nicht mit teuren
Patenten belastet, packt relativ gut und sehr schnell. Außerdem erwartet
man von Officeformaten, daß es eine einzelne Datei ist und gut. Dann will
man noch die Dateigröße möglichst kleinhalten und Text läßt sich recht gut
packen. Plattformübergreifend verfügbar soll es sein. ZIP ermöglicht all das.
Testablauf
Von jedem Format eine leere Datei speichern. Unter Anderem auch um die
Nachvollziehbarkeit zu ermöglichen.
mittels WinRAR 3.71, dessen ZIP-Kompression ist ähnlich stark, wie die von
OpenOffice (Durch Versuch gefunden).
ODF entpacken
ohne Kompression in erstes ZIP-Archiv kopieren (Store)
mit max Kompression das unkomprimierte ZIP-Archiv packen (Best)
dabei kommen folgende Ergebnisse heraus
Draw
ODS 7161 Bytes
Solid ODS 4387 Bytes
gespart ca 38%
Impress
ODS 9206 Bytes
Solid ODS 6391 Bytes
gespart ca 30%
Calc
ODS 6396 Bytes
Solid ODS 3712 Bytes
gespart ca 42%
Writer
ODS 6888 Bytes
Solid ODS 4152 Bytes
gespart ca 40%
Daß es >zusätzlich< was bringt sieht man an der Ersparnis von ca 30-42%.
Je nachdem wie es in einer Datei mit realistischen Inhalten aussieht, wird
die Ersparnis in etwa in dem Bereich liegen. Je nach Inhalt auch darüber
oder darunter. Wenn zB Graphiken eingebunden sind, hilfts weniger. Ohne
Graphik (Ja, solls geben) könnens viel mehr als die hier ermittelten 40%
sein.
Kleine Dateien sagst du. Größere Dateien sind oft kompressibler als kleine. Das untermauert höchstens meine Ausführungen. Das hängt zwar schon vom Inhalt ab, aber grundsätzlich triffts auf Text/XML zu (Die Graphik im ODF, d.h. GIF,PNG,JPG... ist schon gepackt). Das ist ja gerade der Vorteil von 'solid archiving'. Es faßt viele kleine Dateien zu einer großen zusammen. Das Wörterbuch des ZIP-Algorithmus wird noch besser genutzt, was die Kompression erhöht. Mehr dazu auf Wikipedia unter LZ77.
Hinweis
Alle Versionen von WinRAR seit 2.9 liefern untereinander identische
Ergebnisse für jeweils RAR oder ZIP
Wenn man nicht wollte, daß die Dateigröße kleingehalten wird, könnte man eine
Version von TAR benutzen. Kommt unter Linux für TAR/GZ zum Einsatz. Ist
nichts anderes als eine Form von 'solid archiving'. TAR faßt die Dateien/Verzeichnisse in einer Datei zusammen und GZIP komprimiert diese dann. Genau das habe ich hier einmal ausprobiert, nur daß ausschließlich ZIP zur Verwendung kommen sollte. Und siehe da, es funktioniert wie erwartet.
Es sollte jeder die Möglichkeit haben, sich für mehr Geschwindigkeit oder für
mehr Kompression zu entscheiden. Es würde keinesfalls doppelt so lang dauern.
Im ersten Schritt wird ja nur kopiert ohne viel Rechenzeit nötig zu haben.
Erst im zweiten Schritt wird wie bisher auch gewissenhaft komprimiert.
Die zusätzliche Zeit für den ersten Schritt ist daher wirklich nicht so viel.
Im Gegenzug erhält man kleinere Dateien.
Ich will hier nur aufzeigen, wie mit vorhandenen Mitteln noch mehr aus dem
Dateiformat zu holen ist.
Aber zur Sache.
Da ich von 7-zip und WinRAR weiß, daß 'solid archiving' die
Kompressionsdichte deutlich verbessert, habe ich dieses Konzept mal auf ODF
angewandt. ODF ist ja nichts anderes als ein ZIP-Archiv mit XML-Dateien als
Inhalt. Auf einer Webseite, die ich leider nicht mehr finde, wird dargelegt
warum ZIP zum Einsatz kommt. Aussage der Seite: Es ist nicht mit teuren
Patenten belastet, packt relativ gut und sehr schnell. Außerdem erwartet
man von Officeformaten, daß es eine einzelne Datei ist und gut. Dann will
man noch die Dateigröße möglichst kleinhalten und Text läßt sich recht gut
packen. Plattformübergreifend verfügbar soll es sein. ZIP ermöglicht all das.
Testablauf
Von jedem Format eine leere Datei speichern. Unter Anderem auch um die
Nachvollziehbarkeit zu ermöglichen.
mittels WinRAR 3.71, dessen ZIP-Kompression ist ähnlich stark, wie die von
OpenOffice (Durch Versuch gefunden).
ODF entpacken
ohne Kompression in erstes ZIP-Archiv kopieren (Store)
mit max Kompression das unkomprimierte ZIP-Archiv packen (Best)
dabei kommen folgende Ergebnisse heraus
Draw
ODS 7161 Bytes
Solid ODS 4387 Bytes
gespart ca 38%
Impress
ODS 9206 Bytes
Solid ODS 6391 Bytes
gespart ca 30%
Calc
ODS 6396 Bytes
Solid ODS 3712 Bytes
gespart ca 42%
Writer
ODS 6888 Bytes
Solid ODS 4152 Bytes
gespart ca 40%
Daß es >zusätzlich< was bringt sieht man an der Ersparnis von ca 30-42%.
Je nachdem wie es in einer Datei mit realistischen Inhalten aussieht, wird
die Ersparnis in etwa in dem Bereich liegen. Je nach Inhalt auch darüber
oder darunter. Wenn zB Graphiken eingebunden sind, hilfts weniger. Ohne
Graphik (Ja, solls geben) könnens viel mehr als die hier ermittelten 40%
sein.
Kleine Dateien sagst du. Größere Dateien sind oft kompressibler als kleine. Das untermauert höchstens meine Ausführungen. Das hängt zwar schon vom Inhalt ab, aber grundsätzlich triffts auf Text/XML zu (Die Graphik im ODF, d.h. GIF,PNG,JPG... ist schon gepackt). Das ist ja gerade der Vorteil von 'solid archiving'. Es faßt viele kleine Dateien zu einer großen zusammen. Das Wörterbuch des ZIP-Algorithmus wird noch besser genutzt, was die Kompression erhöht. Mehr dazu auf Wikipedia unter LZ77.
Hinweis
Alle Versionen von WinRAR seit 2.9 liefern untereinander identische
Ergebnisse für jeweils RAR oder ZIP
Wenn man nicht wollte, daß die Dateigröße kleingehalten wird, könnte man eine
Version von TAR benutzen. Kommt unter Linux für TAR/GZ zum Einsatz. Ist
nichts anderes als eine Form von 'solid archiving'. TAR faßt die Dateien/Verzeichnisse in einer Datei zusammen und GZIP komprimiert diese dann. Genau das habe ich hier einmal ausprobiert, nur daß ausschließlich ZIP zur Verwendung kommen sollte. Und siehe da, es funktioniert wie erwartet.
Es sollte jeder die Möglichkeit haben, sich für mehr Geschwindigkeit oder für
mehr Kompression zu entscheiden. Es würde keinesfalls doppelt so lang dauern.
Im ersten Schritt wird ja nur kopiert ohne viel Rechenzeit nötig zu haben.
Erst im zweiten Schritt wird wie bisher auch gewissenhaft komprimiert.
Die zusätzliche Zeit für den ersten Schritt ist daher wirklich nicht so viel.
Im Gegenzug erhält man kleinere Dateien.
Ich will hier nur aufzeigen, wie mit vorhandenen Mitteln noch mehr aus dem
Dateiformat zu holen ist.