Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

base64のデータならデコードしてから圧縮をかけた方が高効率……らしい

通信上の止ん事無き事情により、base64でデータが送られてくる事があります。
これをそのまま圧縮するのと、デコードしてから圧縮するのとでは結構なファイル量の違いがでてくる……って話です。

実際のところ

345バイトのこんなデータ

ZmNiYWNma3F5gYqSmqCkpqenpKGdmJONiIN/e3d1c3FxcXFxcnN0dXZ3eXp7fHx9fn5/gIGDhISFhYWFhIOCgYGAgICBgoOEhYeIiYmJiYiGhIF+fHl3dHNyc3N1d3p9gIOGiYuMjY2NjIuKiIeFg4GAfnx7eXl4eHl5enx9fn5/gICAgYGBgYGBgYGBgoKDhISEhISEhIOCgoGAgH9/fn5+fn5/gICAgICAgICAgICAgICAf39/gICBgoOFhoeIiIiIiIeGhYOCgH99fHt6enp6e3x9foCAgoKDg4ODgoKBgH59fHt7e3t8fX5/gIKDhIWFhoaGhoaFhISDgoKBgQ==

そのまんま圧縮

$ cat data.log | gzip -f - > data.gz
$ ls -la data.gz
-rw-r--r--  1 shuzo_kino  staff  263  4 22 21:55 data.gz

デコードしてから圧縮

$ cat data.log  | base64 -d | gzip -9 - > data.gz
$ ls -la data.gz
-rw-r--r--  1 shuzo_kino  staff  188  4 22 22:02 data.gz

参考もと

stackoverflow.com