Szerző: Gálffy Csaba

2013. március 1. 15:01

Mindennél hatékonyabb webes tömörítési algoritmus jelent meg

A Zopfli nevű új tömörítési algoritmussal 3-8 százalékkal nagyobb tömörítési sűrűség érhető el, ami nagy sávszélesség-igényű átvitelnél érezhető különbséget adhat. Az új eljárás kompatibilis a meglévő kliensoldali kitömörítő algoritmusokkal, így szerveroldalon, saját hatáskörben is bevezethető.

Új implementációt talált a DEFLATE tömörítő algoritmushoz a Google egyik mérnöke, Lode Vandevenne. A mellékprojektként kifejlesztett Zopfli algoritmus minden korábbinál magasabb tömörítési sűrűséget képes elérni, ami nagyobb effektív hálózati adatátviteli sebességet, vagy kisebb kapacitásigényt jelenthet. Az új algoritmus a korábbi vezető módszerekhez képest feladattól függően 3-8 százalékkal magasabb sűrítést képes előállítani, ami például mobilos adatátvitel esetében már érezhető megtakarítást hozhat.

A fejlesztő szerint az erősebb tömörítést a minden korábbinál kimerítőbb bejárással éri el az algoritmus. "A módszer iteratív entrópia-modellezésen alapszik és a legrövidebb utat kereső algoritmus választja ki a legalacsonyabb bit-költségű utat az összes létező deflate-kimenet között" -  mondja Vandevenne. Ez a folyamatot nagyon lassúvá teszi, cserébe gyakorlatilag minden redundanciát kiküszöböl a végeredményből. A lassú tömörítés a kicsomagolást nem befolyásolja, a konténer és a kitömörítési eljárás szabványos marad.

A közzétett eredmények szerint a Zopfli algoritmus számottevően hatékonyabb, mint a többi, DEFLATE-kompatibilis eljárás, a legerősebb zlibre is százalékokat képes verni. A jó hordozhatóság jegyében a Zopfli implementációja C-ben készült, így szerveroldalon gyakorlatilag bármilyen korábbi DEFLATE-algoritmus kiváltására alkalmas. Az elterjedés érdekében az algoritmus nyílt forráskódú, Apache 2.0 licenc alatt szabadon terjeszthető, forráskódja itt érhető el.

Alapozó Go fejlesztői képzést indítunk (x)

November 9-én 10 alkalmas, 30 órás, online formátumú Go képzést indít a HWSW.

Alapozó Go fejlesztői képzést indítunk (x) November 9-én 10 alkalmas, 30 órás, online formátumú Go képzést indít a HWSW.

A Zopfli hátránya, hogy a zblihez képest számottevően magasabb CPU-igénye van, a gzip -9 parancshoz képest például 81-szeres számítási kapacitást igényel, jellemzően 2-3 nagyságrenddel több CPU-ciklust igényel. Ennek megfelelően a Google is csak olyan tartalmak tömörítéséhez ajánlja a Zopflit, amelyet csupán ritkán kell újratömöríteni, de nagyon gyakran kell elküldeni. Jó példa erre egy statikus weboldal, amelynél a 3-8 százalékos csökkenés már érezhető sávszéligény-csökkenést hoz, miközben a ritka újratömörítést könnyedén elviseli a kiszolgáló.

A Zopfli előnye, hogy a kitömörítés tökéletesen kompatibilis a DEFLATE-alapú tömörítésekkel, vagyis a meglévő kliensek probléma nélkül tudják kezelni a szerveroldalon implementált új tömörítési algoritmust. A kitömörítésnél ráadásul nem jelentkezik a Zopfli nagyobb számításigénye sem, a művelet sebessége megegyezik a többi algoritmuséval. A Google közleménye szerint a hagyományos DEFLATE-algoritmusokkal tömörített tartalmak, gzip, Zip, PNG, HTTP esetében használható az új eljárás.

A HackerRank 2020-as, 116.000 fejlesztő válaszaiból készült kutatása szerint a legtöbbjük a Go-t szeretné megtanulni következőleg, amely eredménynek az okait most ebben a cikkben szedtük össze.

a címlapról