Googles Zopfli-komprimeringsalgoritme: Pakk ut høyere ytelse fra de komprimerte filene

I mars ble et nytt Google-produkt kalt Zopfli gitt ut for publikum med liten varsel eller fanfare. Realistisk sett synes allmennheten ikke komprimeringsalgoritmer like interessante som en ny smarttelefon. IT-fagfolk bør imidlertid ta oppmerksom på denne spennende nye utviklingen innen datakomprimering.

Zopfli er en komprimeringsalgoritme som er kompatibel med DEFLATE-algoritmen som brukes i zlib, slik at den kan brukes sømløst med allerede distribuerte programmer og enheter som støtter standarden. Zopfli produserer filer som er 4-8% mindre enn zlib på bekostning av å være vesentlig tregere til å komprimere en fil enn andre implementeringer av DEFLATE-algoritmen. Zopfli er hjernen til Dr. Jyrki Alakuijala og Lode Vandevenne, som skrev programmet som en del av deres “20% Time” på Google. Den distribueres under Apache 2.0-lisensen.

Siden Zopfli produserer filer som er kompatible med DEFLATE-algoritmen, krever ikke klientsystemer noen endringer for å bruke Zopfli-komprimerte filer, noe som gjør distribusjonen av denne teknologien i produktet eller tjenesten din relativt enkel.

En ytelsessammenligning av Zopfli og andre implementeringer av DEFLATE-komprimeringsalgoritmene er gitt i Zopfli-dokumentasjonen. I dette eksemplet ble 100 millioner byte tekst fra den engelske Wikipedia (“enwik8”) komprimert i Zopfli og kzip med standardargumenter, gzip med -9 og 7-zip i DEFLATE (ikke LZMA) -modus ved –mx9, begge som er de høyeste tilgjengelige innstillingene for disse programmene.


Fra dette eksemplet er den Zopfli-komprimerte filen 1 449 492 byte mindre enn den gzip-komprimerte filen, men det tok 7, 5 minutter lenger tid å komprimere filen. Zopfli og gzip gir gzip-filformatet, mens 7-Zip og kzip gir zip-filformatet. Hovedoverheadforskjellen mellom gzip- og zip-filformatene er under 0, 0001% av outputstørrelsen.

Tiden det tar å komprimere filene gjør Zopfli uegnet for data som må komprimeres mens du er på farten. I stedet er styrken til Zopfli for binære klatter som endrer seg sjelden, om noen gang, eller lastes ned med så hyppig frekvens at det skal betales mye bekymring for å optimalisere komprimering for å øke nedlastningshastigheten.

Sky

Fordelene for skyapplikasjoner bør ikke undervurderes: Hvis båndbreddebruken din på Amazon S3 er 10 TB per måned, oppnår du 5% bedre komprimering av filer, og reduserer dermed båndbredden på S3, tilsvarer en besparelse på rundt $ 1200 per år. Større prosjekter, eller båndbredde-tunge omstendigheter, for eksempel å skyve en programvareoppdatering via Amazon S3, ville ha stor fordel av å komprimere data som sendes gjennom skyen aggressivt.

Mobil

Hvor denne teknologien virkelig skinner er på mobil, hvor strammere komprimering resulterer i redusert batteribruk og mindre belastning på abonnentens dataplan. Når jeg går tilbake til det forrige eksempelet på programvareoppdateringer, er kostnadene ved å skyve programvare eller firmwareoppdateringer over en 3G- eller 4G-forbindelse til millioner av abonnenter med en bestemt modelltelefon en situasjon der hver byte koster penger. Her er det viktig å skvise ut all ytelse ytelse fra nettverksinfrastrukturen man kan, og med aggressiv komprimering som finnes i Google Zopfli, reduserer du nettverksbelastningen for slike oppgaver.

Utvikling

Fra apputviklerens side lagrer APK-filformatet, som JAR-filformatet det er basert på fra Java, programfiler på innsiden av det som ellers er en standard DEFLATE-kompatibel ZIP-fil. Å bruke Zopfli som en stand-in kompressor i din IDE du velger for å lage dine distribuerbare APK- eller JAR-filer, kombinert med riktig konfigurert bruk av optimaliserings- og tilsløringsverktøyet ProGuard, skaper en veldig kompakt distribuerbar binær fil for brukerne dine.

For webdesignere kan Zopfli også brukes til å optimalisere IDAT-biter i et PNG-bilde, ettersom denne delen av filen er komprimert med DEFLATE, kan disse dataene optimaliseres med Zopfli. Ulike forsøk fra nysgjerrige programmerere på å skrive en Zopfli-basert prosessor for PNG-bilder kan du finne på GitHub.

Samlet sett er fordelene som ligger i Zopfli-komprimeringsalgoritmen verdt tiden som trengs for å implementere biblioteket og komprimere filene i prosjektet ditt. Med denne kunnskapen i hånden, kan du klemme sammen data tettere sammen, og klemme hver krone på skybudsjettet ditt til Lincoln skriker.



© Copyright 2021 | pepebotifarra.com