Почему данные в кодировке base64 сжимаются так плохо?
Недавно я сжимал некоторые файлы и заметил, что данные в кодировке base64 сжимаются очень плохо. Вот один пример:
Исходный файл:429,7 МиБсжимать через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-то-компресс значительно хуже и медленнее, чемсжать-то-base64Как это может быть? Base64 - это обратимый алгоритм без потерь, почему он так сильно влияет на сжатие? (Я тоже пробовал с gzip, с похожими результатами).
Я знаю, что нет смыслаbase64-то-компресс файл, но большую часть времени никто не может контролировать входные файлы, и я бы подумал, что, поскольку фактическая плотность информации (или как она там называется) файла в кодировке base64 будет почти идентична -кодированный вариант, и, таким образом, может быть сжимаем аналогично