Por que os dados codificados em base64 são tão ruins?
Recentemente, eu estava compactando alguns arquivos e notei que os dados codificados em base64 parecem compactar muito mal. Aqui está um exemplo:
Arquivo original:429,7 MiBcomprimir viaxz -9
:13,2 MiB / 429,7 MiB = 0,031
4,9 MiB/s
1:28
base64
e comprima viaxz -9
:26,7 MiB / 580,4 MiB = 0,046
2,6 MiB/s
3:47
base64
o arquivo xz compactado original:17,8 MiB
quase sem tempo = o esperado1.33x
aumento de tamanhoEntão, o que pode ser observado é o seguinte:
xz comprime muito bem ☺dados codificados em base64 não compactam bem, são 2 vezes maiores que o arquivo compactado não codificadobase64-then-comprimir é significativamente pior e mais lento quecompress-then-base64Como isso pode ser? O Base64 é um algoritmo reversível e sem perdas. Por que isso afeta tanto a compactação? (Eu tentei com o gzip também, com resultados semelhantes).
Eu sei que não faz sentidobase64-then-comprimir um arquivo, mas na maioria das vezes não se tem controle sobre os arquivos de entrada, e eu pensaria que, já que a densidade real das informações (ou o que for chamado) de um arquivo codificado em base64 seria quase idêntica à não codificada e, portanto, ser igualmente compressível.