The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

В рамках проекта zlib-ng развивается высокопроизводительный форк zlib

05.06.2015 21:25

Проект zlib-ng нацелен на создание совместимой на уровне API замены библиотеке zlib, предоставляющей некоторые сторонние оптимизации, которые не реализованы в официальном репозитории zlib. В отличие от достаточно консервативного в плане приёма изменений проекта zlib, проект zlib-ng позиционируется как предоставляющий более низкий порог включения патчей, что способствует более быстрому доведению новых решений до пользователей.

Zlib-ng также допускает удаление обходных решений, используемых в zlib для поддержки старых компиляторов и платформ, если они мешают реализации более эффективных методов (например, в zlib применяются некоторые ограничения, необходимые для поддержки 16-разрядных систем и несовместимых с ANSI C компиляторов).

Из добавленных в zlib-ng изменений отмечается интеграция оптимизаций, подготовленных на основе комбинирования патчей от компаний Intel и Cloudflare. В итоге удалось заметно повысить скорость сжатия/распаковки, в основном за счёт использования инструкций SSE . В состав также включены мелкие патчи, накопившиеся в пакетах дистрибутивов, и проведена чистка кода от поддержки устаревших компиляторов и архитектур, которые загромождают кодовую базу и усложняют сопровождение проекта.

  1. Главная ссылка к новости (https://news.ycombinator.com/i...)
  2. OpenNews: Автор LZ4 представил новый быстрый и эффективный алгоритм сжатия ZSTD
  3. OpenNews: Выпуск библиотеки сжатия LZHAM 1.0, нацеленной на создание более быстрой альтернативы LZMA
  4. OpenNews: Компания Intel представила серию патчей, существенно ускоряющих библиотеку сжатия zlib
  5. OpenNews: Компания Google представила совместимый с zlib алгоритм сжатия Zopfli
  6. OpenNews: Компания Google открыла код Snappy, библиотеки для сжатия данных
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/42374-zlib
Ключевые слова: zlib
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (50) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Michael Shigorin (ok), 21:31, 05/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Более быстрому доведению пользователей до чего, простите?
     
     
  • 2.3, Кондратий (?), 21:45, 05/06/2015 [^] [^^] [^^^] [ответить]  
  • +17 +/
    Не до чего, а до кого.
    До меня. :)
     
     
  • 3.10, Crazy Alex (ok), 00:49, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Это правильно, а то как-то редко посещаешь. Развелось людишек - вон, уже 8 миллиардов...
     
  • 3.28, Sw00p aka Jerom (?), 13:22, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    до вас каналы связи быстро должны доносить
     

  • 1.2, ram_scan (?), 21:43, 05/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –10 +/
    Теперь initrd будет распаковываццо на 2 миллисекунды быстрее. Как я раньше жил без этого ?
     
     
  • 2.4, Аноним (-), 21:48, 05/06/2015 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Слоупок, initcpio давно уже xz/lzo/lz4 сжимают

    zlib используется там, где другие методы никак не подходят, например сжатие вебстраниц (apache, nginx).

     
  • 2.5, h31 (ok), 22:08, 05/06/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Какой initrd? Zlib - это юзерспейная либа, которая применяется просто в куче проектов.
     
     
  • 3.7, Аноним (-), 00:09, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • –4 +/
    а это что простите?

    linux-2.6.32-504.12.2.el6/include/linux
    /* zlib.h -- interface of the 'zlib' general purpose compression library

      Copyright (C) 1995-2005 Jean-loup Gailly and Mark Adler

     
     
  • 4.37, kurokaze (ok), 03:20, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >а это что простите? linux-2.6.32-504.12.2.el6/include/linux

    А это у вас анабиозная камера протекла, что и вызвало вашу разморозку
    Впрочем прощаю

     
  • 3.40, Аноним (-), 13:23, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Какой initrd? Zlib - это юзерспейная либа

    Не помешало передрать deflate в кернель...

     

  • 1.6, arisu (ok), 22:12, 05/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    кто такой весь этот Dead2, почему он так похож на Саймона Пегга и о чём будет эта новая комедия?
     
     
  • 2.8, Crazy Alex (ok), 00:14, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    И чем он тебе не угодил?
     
     
  • 3.14, arisu (ok), 07:35, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > И чем он тебе не угодил?

    а где я это сказал? я спросил, кто он такой, чем он известен и почему надо пиарить именно его. а то, казалось бы, пакеты собирать, например — тоже достаточно быть просто аккуратным. а потом бац — бебиан, опенссл…

    вот и про этого интересно, чем он отметился.

     
     
  • 4.23, Crazy Alex (ok), 11:33, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    А, ясно. Показалось, что как-то злобно прозвучало. А так - ну какая разница, через год-другой вот этим себя и проявит, когда все убедятся во вменяемости. Или не проявит.
     
     
  • 5.24, arisu (ok), 11:41, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А, ясно. Показалось, что как-то злобно прозвучало.

    саркастично немного. но я же не виноват, что он действительно похож на Саймона Пегга! после этого уже ни в какую серьёзность я не смог.

     

  • 1.9, _Vitaly_ (ok), 00:25, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Там cамый большой профит от оптимизаций в crc32, которая нужна только для обертки gzip, а в чиcтых inflate/deflate вообще не иcпользуютcя.
     
     
  • 2.22, Аноним (-), 11:31, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ещё zlib часто используется для [де]компрессии при работе с zip-архивами и является чем-то вроде бекэнда для libpng. Там оптимизации вычисления CRC32 лишними тоже не будут.
     
     
  • 3.35, _Vitaly_ (ok), 22:22, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Я в курcе. Проcто чтобы понимали, где именно ожидать улучшений и на cколько. ~ 20-30% на раcпаковке. Еcли эмбедить и не нужен именно gzip, то deflate c адлером будет быcтрее.
     
     
  • 4.36, Аноним (-), 23:05, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    adler по любому будет быстрее. он даже быстрее или так же с аппаратным crc32 / crc32c
     
     
  • 5.41, Аноним (-), 13:25, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > adler по любому будет быстрее.

    ...но и несколько менее надежен. Чудес не бывает.

     

  • 1.11, АнонимХ (ok), 02:33, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Это как-то будет исправлять кривое поведение GZIP на файлах > 4GB ? (gzip -l myarchive.bin.gz неправильно показывает размер)
     
  • 1.12, Аноним (-), 06:46, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Тоже мне новость, этот форк cloudflare c оптимизациями под интеловские процы уже года 2 как живет на https://github.com/cloudflare/zlib и широко известен в узких кругах хайлодщиков.
     
     
  • 2.33, Crazy Alex (ok), 16:24, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот глядишь - будет известен не только "в узких кругах".
     

  • 1.13, rob pike (?), 07:21, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    а Google будет продолжать проталкивать свой Snappy?
     
     
  • 2.27, Stax (ok), 13:16, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    У них разные области применения, zlib никогда не достигнет скорости snappy, а snappy - сжатия zlib. Snappy это конкурент lzo и lz4.
     
  • 2.42, Аноним (-), 13:26, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > а Google будет продолжать проталкивать свой Snappy?

    ...которого по скорости сжатия и распаковки давно сделали LZ4 и LZO, если уж кого скорость интересовала.

     

  • 1.15, Zenitur (ok), 09:54, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    > Zlib-ng также допускает удаление обходных решений, используемых в zlib для поддержки старых компиляторов и платформ

    Как-то раз в Glibc тоже приняли один патч. Он оптимизировал memcpy с помощью SSE4.1. Если посмотреть историю GIT, то таких патчей было множество (SSE, SSE2), но конкретно этот сделал так, что в некоторых случаях данные записывались задом наперёд, иначе никакого прироста производительности. Недовольным же сказали что поведение пересекающихся регионов не описано в стандарте, поэтому может быть каким угодно, и если вы полагаетесь на традиционный порядок - вы нуб и клинический идиот.

    Ну что скажу. Могли вообще сделать чередование: 10 бит слева направо, потом 10 бит справа налево. Кто не учёл такое поведение memcpy - сам виноват! А вообще я бы откатил патч-первопричину, а не создавал обходные пути решения проблемы.

    Интересно, что отвалится при использовании zlib-ng вместо zlib? Уверен что половина софта точно.

     
     
  • 2.16, Незенитур (?), 10:12, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Как-то раз в Adobe Flash тоже приняли один патч. Он использовал memcpy вместо memmove для копирования перекрывающихся областей. Недовольным же сказали что поведение пересекающихся регионов не описано в стандарте, поэтому может быть каким угодно, и если вы не используете реализацию, копирующую строго в том порядке, как это предположили разработчики Adobe, - вы нуб и клинический идиот.

    Ну что скажу. Могли вообще сделать копирование из /dev/urandom. У кого значение генератора случайных чисел не совпадает с копируемым контентом - сам виноват. А вообще я бы использовал при сборке -Dmemcpy=memmove, а не создавал новые проблемы.

    Интересно, что отвалится при использовании zlib-ng вместо zlib? Уверен что снова Adobe Flash.

     
  • 2.17, Незенитур (?), 10:14, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Недовольным же сказали что поведение пересекающихся регионов не описано в стандарте

    Ложь. Поведение пересекающихся регионов ОПИСАНО в стандарте - там чётко написано, что для них надо использовать другую функцию.

     
     
  • 3.19, arisu (ok), 10:26, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    >> Недовольным же сказали что поведение пересекающихся регионов не описано в стандарте
    > Ложь. Поведение пересекающихся регионов ОПИСАНО в стандарте - там чётко написано, что
    > для них надо использовать другую функцию.

    подобным идиотам на документацию плевать: у них виноваты все вокруг, но только не обезьяна, которая наплевала на документацию.

    что, конечно, никак не отменяет изначальной идиотичности API memcpy(3) и memove(3).

     
     
  • 4.43, Аноним (-), 13:28, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > подобным идиoтам на документацию плевать:

    Ну, блин, это ж зенитар.

     
  • 3.21, Zenitur (ok), 10:57, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >> Недовольным же сказали что поведение пересекающихся регионов не описано в стандарте
    > Ложь. Поведение пересекающихся регионов ОПИСАНО в стандарте - там чётко написано, что
    > для них надо использовать другую функцию.

    Спасибо за наводку, посмотрю.

     
  • 2.18, Kotan (?), 10:14, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Ты хочешь пользоваться API неправильно, и чтобы оно ещё корректно работало? Я рад, что не работаю с тобой в одной компании.
     
     
  • 3.20, Zenitur (ok), 10:56, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Я хочу переносимость бинарей между дистрами, и не хочу чтобы в Ubuntu 15.04 не запустился бинарь от Fedora 22 из-за того, что в Fedora (например) чуть более новый GCC, а в Ubuntu чуть более новый zlib.

    И вообще я использую Athlon XP и SLED 10 - а в новости написано что в zlib дропнут старые компиляторы. Я регулярно устанавливаю новые либы, последнее, что я устанавливал - libstdc++.so.6 из GCC 4.9 для 2GIS (в самой же системе - GCC 4.1). Обновить дистр - не вариант, так как новые на таком железе тормозят, поэтому для очередного Skype 5.0 я обновлю zlib, и получу незапускающуюся систему!

     
     
  • 4.29, Аноним (-), 13:30, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Так бинарь изначально написан криворукими макаками, и работал только потому, что так сложились звезды.
     
  • 4.32, Crazy Alex (ok), 16:20, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Переносимость бинарей? А зачем, собственно? Чтобы поганой проприетарщине удобнее было? Что до дропа старых компиляторов - там надо было написать не "старые", а "антикварные, кривые и замшелые". 16 бит? Несовместимые с ANSI C? Их сто лет как пора выкинуть.

    Ну и ожидать, что мейнстримная ось будет работать на совсем не мейнстримном (а адски устаревшем) железе - довольно глупо. Специализированные дистры в помощь для такого случая.

     
  • 4.39, kurokaze (ok), 03:27, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Обновить дистр - не вариант, так как новые на таком железе тормозят

    Выкинь говнодистр и поставь нормальный.

    >я обновлю zlib, и получу незапускающуюся систему!

    Песочница + ldd для проверки спасут тебя

     
  • 4.44, Аноним (-), 13:31, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > для очередного Skype 5.0 я обновлю zlib, и получу незапускающуюся систему!

    А откуда ты взял что кого-то колышут твои проблемы? Особенно разработчиков дистров и либ?

    Тебе с твоей любовью к проприетарному гомнецу проще всего было бы использовать винды. Там и шкап чуть ли не из коробки, и горб-гис наверняка готовый есть, и совместимость бинарников между дистрами есть (*).

    * Дистрибутив может быть сделан любой компанией, при условии что эта компания - Майкрософт.

     
     
  • 5.47, arisu (ok), 13:44, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > А откуда ты взял что кого-то колышут твои проблемы?

    ну так Ватсон без трубки уже не может, вот и страдает прилюдно.

     
  • 2.38, kurokaze (ok), 03:24, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Как-то раз в Glibc тоже приняли один патч. Он оптимизировал memcpy с

    Ты всё переврал от и до. Тебя бульварный журналист покусал или ты сам себя за задницу цапнуть умудрился?

     
  • 2.45, Аноним (-), 13:34, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Кто не учёл такое поведение memcpy - сам виноват!

    Если ты решил изобразить из себя кулхацкера и использовал функцию для того, для чего ее не предназначали, завязавшись на какое-то конкретное поведение конкретной реализации, которое никто в общем то нигде не гарантировал, а кто-то возьми да и напиши другую реализацию, работающую иначе - кто ж тебе доктор? Любители использовать недокументированные и нестандартные возможности не имеют права жаловаться что что-то отвалилось.

     

  • 1.25, YetAnotherOnanym (ok), 12:26, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    А буквы "-ng" в названии - это их BSD'шники покусали?
     
     
  • 2.26, Andrey Mitrofanov (?), 12:45, 06/06/2015 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > А буквы "-ng" в названии - это их BSD'шники покусали?

    Не, new gen. это Прелевин. </покусал>

     
     
  • 3.50, Sluggard (ok), 23:49, 09/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    Это «next generation», а не «new». И вряд ли разработчики zlib-ng или той же Miranda NG знают о наших писателях-мухоморщиках. )
     

  • 1.30, Аноним (-), 13:47, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Формат архива ведь не изменился, zlib-ng полностью совместим с zlib?
     
     
  • 2.48, Led (ok), 18:24, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Формат архива ведь не изменился, zlib-ng полностью совместим с zlib?

    Какого архива, малыш?

     
  • 2.49, Michael Shigorin (ok), 19:05, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > Формат архива

    Это называется bitstream (двоичный поток).

     

  • 1.31, Аноним (-), 13:49, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    У zlib разве нет флагов сборки с оптимизацией работы под конкретной архитектурой?
     
  • 1.34, хрюкотающий зелюк (?), 21:46, 06/06/2015 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А бенчмарки есть, первые результаты???
     
     
  • 2.46, Аноним (-), 13:34, 07/06/2015 [^] [^^] [^^^] [ответить]  
  • +/
    > А бенчмарки есть, первые результаты???

    Сколько волка^W zlib не оптимизируй, а LZ4 все-равно быстрее :)

     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру