Я недавно сжимал некоторые файлы, и я заметил, что данные с кодировкой base64, похоже, очень плохо сжимаются. Вот один пример:
- Исходный файл: 429,7 MiB
- сжать через
xz -9
:13,2 MiB / 429,7 MiB = 0,031
4,9 MiB/s
1:28
-
base64
и сжимаем черезxz -9
:26,7 MiB / 580,4 MiB = 0,046
2,6 MiB/s
3:47
-
base64
исходный сжатый файл xz:17,8 MiB
почти не время = ожидаемый1.33x
увеличение размера
Так что можно заметить, что:
- xz сжимает действительно хорошо ☺
- base64-кодированные данные плохо сжимаются, он в 2 раза больше, чем сжатый сжатый файл
- base64-then-compress значительно хуже и медленнее, чем compress-then-base64
Как это может быть? Base64 - это безрезультатный обратимый алгоритм, почему он так сильно влияет на сжатие? (Я тоже пытался с gzip, с аналогичными результатами).
Я знаю, что это не имеет смысла для base64-then-compress файла, но большую часть времени у него нет контроля над входными файлами, и я бы подумал, что с фактической плотностью информации (или что-то еще он называется) файла с кодировкой base64, будет почти идентичен некодированной версии и, таким образом, будет сжимаемым образом.