Het Pack-project heeft gepoogd een formaat voor het archiveren van bestanden te creƫren, gebaseerd op de SQLite-bibliotheek en het ZSTD (Zstandard) compressie-algoritme. Het voorbereide prototype, geschreven in Pascal en verspreid onder de Apache 2.0-licentie, overtrof in snelheid bij het maken van archieven de meest populaire archiveringsprogramma's, terwijl het slechts gegevens las, met behulp van de libzstd-bibliotheek comprimeerde en SQL-operaties uitvoerde om de gecomprimeerde gegevens in het SQLite-databasebestand toe te voegen.
Bij het comprimeren van een map met 81.000 bestanden, met een totale grootte van 1,25 GB, was Pack 112 keer sneller dan de ZIP-tool, met een uitvoeringstijd van 1,3 seconden in vergelijking met 146 seconden voor ZIP. De grootte van het archief was daarbij 23% kleiner bij Pack (194 MB bij Pack en 253 MB bij ZIP). Ter vergelijking: de tar-tool voltooide de archivering in 4,7 seconden zonder compressie en in 28,5 seconden met gzip-compressie, de RAR-verpakking volbracht de test in 27,5 seconden, terwijl 7z 54,2 seconden nodig had. De archiefgroottes waren: tar.gz ā 214 MB, RAR ā 235 MB, 7z ā 135 MB. Het blijkt dat Pack ook andere archiveringsprogramma's overtreft in snelheid bij het uitpakken en bij de willekeurige toegang tot bestanden, terwijl het minder RAM-geheugen verbruikt. ZIP: 253 MB, 146 s 7z: 135 MB, 54.2 s sneller dan ZIP met 2,7 keer tar.gz: 214 MB, 28.5 s x 5.1 RAR: 235 MB, 27.5 s x 5.3 tar: 1345 MB, 4.7 s x 31 Pack: 194 MB, 1.3 s x 112
Er wordt niet gesproken over de invloed van de bestands-cache op de testresultaten. Vermoedelijk is de lage snelheid van ZIP te wijten aan de volgorde van het uitvoeren van de tests zonder rekening te houden met de caching van gegevens in het geheugen ā de test met ZIP werd uitgevoerd met een koude cache, terwijl de andere tests met een verwarmde cache werden uitgevoerd. Onder normale omstandigheden toont Zstandard een 3-5 keer hogere compressiesnelheid in vergelijking met zlib en een twee keer snellere uitpak-snelheid, met een compressieniveau dat 10-15% hoger ligt.
Aanvulling: Een soortgelijk idee voor het opslaan van gecomprimeerde bestanden als blobs in een SQLite-database werd in 2014 geïmplementeerd in het archiveringsprogramma sqlar, dat door de ontwikkelaars van SQLite is gemaakt als experiment om de efficiëntie van het opslaan van blobs in SQLite te beoordelen. In sqlar wordt zlib gebruikt voor compressie en is de bestandsgrootte ongeveer 2% groter dan bij de ZIP-tool.
Bron: opennet.ru
