データを保存するプロジェクトを書いているので、圧縮する必要があります。zlib を試しましたが、プロジェクトのボトルネックです。だから多分もっと速い解決策があります。高い圧縮率は必要ありませんが、非常に高速な圧縮を探しています。本当に無料で、独自のソフトウェアで使用できる zlib 以外のデータ圧縮ライブラリはありますか (プロジェクト、私が取り組んでいるプロジェクトは GPL ベースではありません)。私のプロジェクトは C++ 上にあり、テキストの char* 配列を圧縮する必要があります。
11 に答える
7zipはパブリックドメインだと思います。LZMA圧縮。
迅速であるが必ずしもこれまでで最高の圧縮ではないものが必要なため、RLE(ランレングスエンコーディング)圧縮を行うライブラリを検討することをお勧めします。1つの実装はlibrleであり、これはBSDライセンスの下にあり、プロプライエタリ使用はかなり許可されています。
別の回答LZO
では、デフォルトの「より高速な(解凍)圧縮が必要」ソリューションの一種である について既に言及しています。
私が見つけた別のものはliblzfです。LZO
速度と圧縮率の点でかなり近いです。LZO
GPLライセンスを持っていますliblzf
が、BSDライセンスを持っています(これは私見ですが、利点です)。
LZO ライセンスの問題により、BSD/MIT ライセンスであり、LZO に非常に似ており (統合が容易なため)、ローエンド ハードウェア (Pentium2 ではなく安価な 32 ビット MCU を考えてください) での実行に適している、このスレッドの提案を評価することにしました。 .
LZ4、LZF、FastLZ をテストし、結果を LZO と比較しました。グラフィックデータを圧縮しました。正確な結果を投稿することはできませんが、サイズ (LZF-LZ4-LZO の場合は 5-2-2 勝、マージンは小さかった)。
私は 2 番目の lz4です。BSD ライセンスを持っています。
Google は、C++ で書かれた BSD ライセンスの圧縮ライブラリである "Snappy" をリリースしました (C のバインディングが含まれています)。
http://code.google.com/p/snappy/
ソースの README によると:
私たちのテストでは、Snappy は通常、同じクラスのアルゴリズム (LZO、LZF、FastLZ、QuickLZ など) よりも高速であり、同等の圧縮率を達成しています。
Intel Integrated Performance Primitivesには、さまざまな圧縮を実装するサンプルがあります。
- bzip2 互換ライブラリー ipp_bzip2 サンプルは、インテル IPP データ圧縮ドメイン関数を使用して bzip2/libbzip2 を実装する方法を示しています (ロスレスのブロックソート・データ圧縮および bzip のスレッド最適化の新しい改善のためのプログラムおよびライブラリー)。
- GZIP 互換ライブラリー IPP_GZIP サンプルは、インテル® IPP データ圧縮ドメイン API を使用して効果的な無損失データ圧縮ソリューションを実装する方法を示しています。さらに、このサンプルでは、OpenMP やその他の方法を使用してアプリケーションを並列化し、マルチコア環境で高度なメリットを得る方法を示します。
- zlib 互換ライブラリー (新規!) このコードサンプルは、最適化された LZ77 およびインテル® IPP のハフマンコーディング関数を使用して、zlib 互換のデータ圧縮ライブラリーを構築する方法を示しています。
- 一般的なデータ圧縮の例 インテル IPP データ圧縮ドメインが提供する関数の使用方法を示します。ハフマン エンコーディング/デコーディング、RLE エンコーディング/デコーディング、MoveToFront (MTF)、Burrows-Wheeler Transformations (BWT)、General Interval Transform (GIT)、および Lempel-Ziv-Storer-Szymanski (LZSS) 関数が含まれます。
IPP は無料ではありませんが、非常に高速です。Windows と Linux をサポートしています。
はい、bzip2にはBSDライセンスがあります。