
У себя в движке я использую текстуры, данные в которых упакованы с помощью Zlib. А ведь когда-то давно я использовал RLE и RLE4. Но в некоторых проектах вместо или наравне с Zlib я использовал LZ4, скорость распаковки которого заявлена в 10(!) раз выше скорости Zlib.
Сегодня добавил в движок, билдер и вьювер поддержку LZ4 (default и high compression).
Тесты проводил на текстурном атласе 1400x1400x32, который распаковывал 100 раз в цикле. Память под входные и выходные данные аллоцирую только один раз вне цикла. Размер выходной текстуры, упакованной Zlib, меньше чем при использовании LZ4 (оба варианта).
Тесты под macOS и под iOS в дебажной сборке показали сравнимые результаты по скорости распаковки, а вот в релизе скорость распаковки LZ4 была в 4.5 раза выше. И это уже очень хорошо.
На Android разница получилась менее двух раз, что тоже весьма хороший результат.
На Web разница уже не столь очевидна и, в зависимости от погоды на марсе, быстрее может оказаться и Zlib, и LZ4.