3. Я выложил Snappy 1.2.0. Добавили уровень 2 компрессии. Одним из неожиданных результатов оказалось, что декомпрессия ускорилась. Почему? Если почитать формат, на каждом шагу, Snappy выбирает одно из 4 действий как именно скопировать данные. Уровень два сместил эту статистику в более длинные копирования строк, поэтому декомпрессия улучшилась даже несмотря на то, то код декомпрессии абсолютно branchless. Дальнейшие эксперименты это подтверждают ещё больше. До LZ4 далеко (там на моей станции 4000MB/s везде), но наконец-то я нашёл как двигаться к этому лимиту. В целом история достаточно грустная, так как snappy никому кроме гугла практически не нужен, но об идее рассказать захотелось, потому что библиотеки умрут, алгоритмы и идеи останутся.



snappy 1.2.0 lvl1 636 MB/s 3173 MB/s 101436030 47.86 silesia.tar

snappy 1.2.0 lvl2 460 MB/s 3330 MB/s 94740855 44.70 silesia.tar