zstd vs gzip: より高速な CI キャッシュとアーティファクトの圧縮
zstd(Zstandard)は同等の設定で一般に gzip より優れた速度と圧縮率を提供し、gzip はより古く、文字どおりどこでも利用できます。
圧縮は CI キャッシュの save/restore とアーティファクトのアップロード時間に直接影響します。zstd は速度と圧縮率のトレードオフに優れ、調整可能なレベルを持つモダンなアルゴリズムであり、gzip(DEFLATE)はあらゆるツールが理解する普遍的な baseline です。
| zstd | gzip | |
|---|---|---|
| 速度 | 同等の圧縮率でより高速 | baseline |
| 圧縮率 | 通常より良い、調整可能なレベル | そこそこ、調整は限定的 |
| 普及度 | 広く利用可能、インストールが必要な場合あり | デフォルトでどこでも |
| レベル | 広い範囲(超高速を含む) | 狭い範囲 |
| 典型的な CI での用途 | キャッシュ/アーティファクトの圧縮 | 普遍的なフォールバック |
zstd が優れている点
大きな CI キャッシュとアーティファクトでは、zstd は通常 gzip より高速に圧縮・展開しつつ、同等かそれ以上の圧縮率に達し、キャッシュの save/restore 時間を削減します。広いレベル範囲により速度とサイズを引き換えにできます。モダンな GitHub Actions のキャッシュツールは、利用可能なら既に zstd を優先します。
gzip が優れている点
gzip は事実上あらゆるシステムに存在し、あらゆるツールと言語ランタイムが理解するため、zstd がインストールされていることを保証できない場合や、下流のコンシューマが gzip しか受け付けない場合には安全なデフォルトです。小さなペイロードでは差はごくわずかです。
CI では
save/restore 時間が重要な大きなキャッシュとアーティファクトには zstd を優先しましょう。公式の Actions キャッシュは、存在すれば自動的に zstd を使い、そうでなければ gzip にフォールバックします。普遍性や固定の下流フォーマットが必要な場合は gzip を使いましょう。
結論
圧縮時間を削るには大きな CI キャッシュとアーティファクトに zstd を使い、普遍的な互換性や極小のペイロードには gzip にフォールバックしましょう。ほとんどのパイプラインのキャッシュでは、zstd がより高速なデフォルトです。