zstd або Zstandard — це алгоритм стиснення без втрат, який розробляється з 2015 року при підтримці Facebook. Автор Ян Коллє (фр. Yann Collet). zstd — це референсна реалізація алгоритму Zstandard написана мовою C.
Тип | бібліотека і d |
---|---|
Операційна система | GNU/Linux[d], BSD[d] і Mac OS |
Мова програмування | C |
Ліцензія | d[1][2] і GNU General Public License, version 2.0[d][1][3] |
Репозиторій | github.com/facebook/zstd.git |
Вебсайт | facebook.github.io/zstd/ |
Реалізація використовує алгоритм стиснення типу LZ77, а також ефективне ентропійне кодування типу ANS.
Особливості
zstd був розроблений для забезпечення швидкості стиснення та декомпресії, зберігаючи при цьому співвідношення стиснення, порівнянне з алгоритмом Deflate (який був розроблений у 1991 році та використовується в оригінальних програмах ZIP та gzip).
zstd пропонує регульовані рівні стиснення від -7
(найшвидший) до 22
(найповільніший за швидкістю стиснення, але з найкращим коефіцієнтом стиснення).
Консольна утиліта zstd має адаптивний режим (--adapt
), який регулює рівень стиснення залежно від умов вводу/виводу, зокрема від швидкості запису вихідних даних.
Швидкість декомпресії залишається стабільною на різних рівнях стиснення, коливаючись менше ніж на 20 %.
На максимальному рівні стиснення zstd досягає співвідношення стиснення близького до lzma, lzham та ppmx, і демонструє кращі результати ніж lza або bzip2.
zstd досягає поточного оптимуму Парето, оскільки він декомпресується швидше, ніж будь-який інший доступний на даний час алгоритм із таким самим або кращим співвідношенням стиснення.
Словники можуть значно впливати на ступінь стиснення малих файлів. Zstd може використовувати словник стиснення, наданий користувачем. Він також має режим навчання, коли генерує словник із набору зразків. Зокрема, один словник можна завантажити для обробки великих наборів файлів із надмірністю між файлами, але не обов'язково в межах кожного окремого файлу (наприклад, журнали).
Дизайн
Zstd поєднує етап зіставлення зі словником (LZ77) з великим вікном пошуку та швидким етапом кодування ентропії. Він використовує як кодування Хаффмана (використовується для записів у розділі літералів), так і ентропію з кінцевим станом (FSE) — швидку табличну версію ANS, tANS, що використовується для записів у розділі послідовностей. Через те, як FSE переносить стан між символами, декомпресія передбачає обробку символів у розділі послідовностей кожного блоку у зворотному порядку (з останнього до першого).
Використання
Алгоритм zstd використовується в ядрі Linux з версії 4.14 для використання в файлових системах btrfs та .
Також алгоритм тестувався в FreeBSD для інтеграції в файлову систему OpenZFS.
Деякі програми зберігання або обміну даних з вбудованим стисненням, алгоритм якого можна вибрати, використовують zstd опцією компресії:
Алгоритм та MIME-тип application/zstd
були запропоновані в IETF
Ліцензія
Референсна реалізація ліцензована під ліцензією BSD та розміщена на Github. З версії 1.0 zstd має додаткове «Надання патентних прав».
Примітки
- License // https://github.com/facebook/zstd/blob/v1.3.3/README.md
- https://github.com/facebook/zstd/blob/v1.3.3/LICENSE
- https://github.com/facebook/zstd/blob/v1.3.3/COPYING
- https://datatracker.ietf.org/doc/html/rfc8878
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
zstd abo Zstandard ce algoritm stisnennya bez vtrat yakij rozroblyayetsya z 2015 roku pri pidtrimci Facebook Avtor Yan Kollye fr Yann Collet zstd ce referensna realizaciya algoritmu Zstandard napisana movoyu C ZstdTipbiblioteka i dOperacijna sistemaGNU Linux d BSD d i Mac OSMova programuvannyaCLicenziyad 1 2 i GNU General Public License version 2 0 d 1 3 Repozitorijgithub com facebook zstd gitVebsajtfacebook github io zstd Realizaciya vikoristovuye algoritm stisnennya tipu LZ77 a takozh efektivne entropijne koduvannya tipu ANS Osoblivostizstd buv rozroblenij dlya zabezpechennya shvidkosti stisnennya ta dekompresiyi zberigayuchi pri comu spivvidnoshennya stisnennya porivnyanne z algoritmom Deflate yakij buv rozroblenij u 1991 roci ta vikoristovuyetsya v originalnih programah ZIP ta gzip zstd proponuye regulovani rivni stisnennya vid 7 najshvidshij do 22 najpovilnishij za shvidkistyu stisnennya ale z najkrashim koeficiyentom stisnennya Konsolna utilita zstd maye adaptivnij rezhim adapt yakij regulyuye riven stisnennya zalezhno vid umov vvodu vivodu zokrema vid shvidkosti zapisu vihidnih danih Shvidkist dekompresiyi zalishayetsya stabilnoyu na riznih rivnyah stisnennya kolivayuchis menshe nizh na 20 Na maksimalnomu rivni stisnennya zstd dosyagaye spivvidnoshennya stisnennya blizkogo do lzma lzham ta ppmx i demonstruye krashi rezultati nizh lza abo bzip2 zstd dosyagaye potochnogo optimumu Pareto oskilki vin dekompresuyetsya shvidshe nizh bud yakij inshij dostupnij na danij chas algoritm iz takim samim abo krashim spivvidnoshennyam stisnennya Slovniki mozhut znachno vplivati na stupin stisnennya malih fajliv Zstd mozhe vikoristovuvati slovnik stisnennya nadanij koristuvachem Vin takozh maye rezhim navchannya koli generuye slovnik iz naboru zrazkiv Zokrema odin slovnik mozhna zavantazhiti dlya obrobki velikih naboriv fajliv iz nadmirnistyu mizh fajlami ale ne obov yazkovo v mezhah kozhnogo okremogo fajlu napriklad zhurnali Dizajn Zstd poyednuye etap zistavlennya zi slovnikom LZ77 z velikim viknom poshuku ta shvidkim etapom koduvannya entropiyi Vin vikoristovuye yak koduvannya Haffmana vikoristovuyetsya dlya zapisiv u rozdili literaliv tak i entropiyu z kincevim stanom FSE shvidku tablichnu versiyu ANS tANS sho vikoristovuyetsya dlya zapisiv u rozdili poslidovnostej Cherez te yak FSE perenosit stan mizh simvolami dekompresiya peredbachaye obrobku simvoliv u rozdili poslidovnostej kozhnogo bloku u zvorotnomu poryadku z ostannogo do pershogo VikoristannyaAlgoritm zstd vikoristovuyetsya v yadri Linux z versiyi 4 14 dlya vikoristannya v fajlovih sistemah btrfs ta Takozh algoritm testuvavsya v FreeBSD dlya integraciyi v fajlovu sistemu OpenZFS Deyaki programi zberigannya abo obminu danih z vbudovanim stisnennyam algoritm yakogo mozhna vibrati vikoristovuyut zstd opciyeyu kompresiyi tar dlya zberigannya danih rsync mysql dlya peredachi danih Algoritm ta MIME tip application zstd buli zaproponovani v IETFLicenziyaReferensna realizaciya licenzovana pid licenziyeyu BSD ta rozmishena na Github Z versiyi 1 0 zstd maye dodatkove Nadannya patentnih prav PrimitkiLicense https github com facebook zstd blob v1 3 3 README md https github com facebook zstd blob v1 3 3 LICENSE https github com facebook zstd blob v1 3 3 COPYING https datatracker ietf org doc html rfc8878