Developer's Blog

Zip より Tar より QuickLZ が(サイズが大きいときは)便利です

こんにちは。開発担当の森本です。

今回は、Fenrir Pass Connect を支える技術にちょっと関係のある、 高速な圧縮フォーマットの話をしたいと思います。

プロジェクトの規模が拡大 → 扱うファイルの数とサイズが増加

PC の性能向上や、スマートフォンの普及により、様々なプロジェクトで扱う情報の量がどんどん増えているように思います。

たとえば Sleipnir 3 の場合、webkit 対応に伴ってソースコードの量が激増し、フルビルドを行った場合、リポジトリや中間生成物を含めて 20GB も有ります!
また、運用しているサーバーも増加しており、そのログも馬鹿にならないサイズになってきており、扱いに困ることが増えてきています。

地道に、不要なデータを取り除き、扱う量をシェイプアップするのも良いのですが…
他にできる事はないのでしょうか?

早くてそこそこ縮む圧縮方式があれば OK

ファイルを圧縮してしまえばサイズも減るし、ファイル数も減って扱いやすくなります。
一般的に圧縮方式は、ZIP や 7ZIP など、UNIX系だと GZIP、BZIP2 などが良く使用されています。

これらの方式では圧縮・展開のときに、速度よりも圧縮率を優先して作られています。
そのため、これらの方式を 20 GB のファイル群の圧縮に使用すると、一晩かかっても圧縮が終わっていないような事態が発生します。

では、圧縮せずに tar などで一ファイルに纏めるだけにするとどうでしょうか?
この場合、圧縮時間の問題は解決しますが、ファイルサイズが大きいままなので、ネットワークを超えたコピーなどに時間がかかってしまいます。

では、圧縮・展開が速くて、それなりに圧縮できるような圧縮形式は無いものでしょうか?

ここで颯爽と QuickLZ が見参!

これらの問題は、QuickLZ を使用すれば良い感じに改善することができます!

細かい説明より、まず QuickLZ と 7Zip、LZO、LZ4 などのベンチマークをご覧下さい。
Windows で測定したものですが、他の OS においても傾向は同じだと思います。

このように、QuickLZ は tar と同じぐらい速く、zip にちょっと劣る程度の圧縮率を持つ素晴らしいツールだと解ります。
あと、圧縮率を求めるなら Zip は捨てて 7Zip に移行すべきだと思います。速い上に良く縮みます。

ちなみに、環境は Core i7 860 で、 SSD 上にある Sleipnir for Win 3.5 の展開済みファイルを、圧縮→展開する方法で測定しました。
使用したツールは qpress64.exe(QuickLZ 1.5.0相当)
7za.exe(9.20)
tar(W32TeX付属)
LZ4.exe(v1.7)
lzop.exe(v1.03) です。

まとめ

QuickLZ は大変使いやすく有用なのですが、知名度が低いので紹介の意味を込めて書いてみました。
実際に使ってみると、いかに Zip 圧縮が遅くてストレスだったかを感じられると思うので、是非お試し下さい。
ちなみに、snappy も期待できそうなのですが、Windows で動作する実装が少ないため、今回は評価対象外としました。

これからも、様々なツールを駆使し、プロダクトを改善できるように頑張っておりますので、ご期待下さい。

ソーシャルアカウント

Sleipnir for Windows の Facebook ページでは、ユーザーの方たちとのコミュニケーションや最新情報の投稿などを行なっています。よろしければいいね!してください!

フェンリルの開発者アカウントでは、フェンリルプロダクトの最新開発情報などをつぶやいています。よろしければフォローしてください!

Copyright © 2019 Fenrir Inc. All rights reserved.