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