fpZip: Kompression
Beim Erstellen von ZIP-Archiven kann die Kompression für jede Datei unabhängig voneinander
durchgeführt werden. Lediglich beim Schreiben der komprimierten Daten in das Archiv muss der
Vorgang serialisiert werden.
fpZip erzeugt für jede zu komprimierende Datei einen asynchronen Vorgang. Der Pseudocode
in einer asynchronen Programmiersprache ist wie folgt:
CompressFiles(files)
{
Memory inMemory[files.count];
Memory outMemory[files.count];
for (i = 0; i < files.count; ++i) {
ReadFile(files[i], inMemory[i]);
Compress(inMemory[i], outMemory[i]);
}
}
Die Kompressionsfunktion kann weiter in zwei asynchrone Vorgänge für den Deflate- und den CRC32-Algorithmus aufgeteilt werden:
Compress(inMemory, outMemory)
{
Deflate(inMemory, outMemory);
CRC32(inMemory);
}
Somit erhält man folgendes Abhängigkeitsdiagramm:
|