Google опубликовала исходные коды одного из компонентов своей облачной инфраструктуры

Google опубликовала исходные тексты библиотеки сжатия, которая используется в ряде компонентов распределенной программной инфраструктуры Google, в том числе, в распределенной вычислительной платформе MapReduce и распределенной БД BigTable.

Библиотека называется Snappy (ранее она также представлялась как Zippy), ее тексты уже доступны в репозиториях Google Code. Как следует из названия библиотеки (snappy – “живой”, “шустрый”), главная цель при ее разработке - высокая скорость. “Библиотека не преследует достижения максимальной степени сжатия или совместимости с другими библиотеками, – сообщил представитель Google. – Вместо этого мы стремимся добиться максимальной скорости при достойном уровне сжатия".

По утверждению Google, по сравнению с популярной библиотекой zlib, Snappy позволяет ускорить процесс сжатия и распаковки до 10 раз, хотя сжатые файлы получаются на 20-100% больше размером, чем при использовании zlib. При использовании процессора core i7-920 сжатие происходит на скорости 250 Mб/сек, а распаковка – на скорости 500 Mб/сек.

Типичная степень сжатия – от 1,5x до 1,7x для текстовых файлов и от 2х до 4х для HTML-файлов. Zlib в самом быстром режиме способна сжимать со степенью от 2.6x до 2.8x для текста и от 3x до 7x для HTML-файлов. “Поэтому, если вам необходимо сохранить место на диске, используйте zlib, bzip2 или что-то ещё. Если же вам нужно сократить нагрузку на диски, нагрузку на сеть и на процессор, тогда Snappy – именно то, что вам нужно”, – сообщает разработчик Google Стейнар Гундерсон (Steinar Gunderson).

По словам Гундерсона, в алгоритме Snappy отсутствует второй этап “снижения энтропии”, которым характеризуются zlib и другие LZ-подобные библиотеки сжатия. В Snappy этот этап исключен, а вместо него используется фиксированный созданный вручную формат упаковки данных.

По словам Гундерсона, это позволяет сэкономить массу процессорного времени – инженеры Google потратили годы, доводя этот алгоритм до совершенства.

©  CNews