質問

アプリケーションでは、繰り返し文字列値を多く含むデータを保存および送信する必要があります(XMLドキュメントのエンティティ名を考えてください)。提案されている解決策は2つあります:

  • A)ドキュメントに沿って保存される文字列テーブルを作成し、ドキュメント本文でインデックス参照を使用する(マルチバイトエンコーディングを使用)、または
  • B)単にgzipまたは同様の圧縮アルゴリズムを使用してドキュメントを圧縮します。

速度とデータサイズの点でパフォーマンスが向上する可能性があるのはどれですか? (明らかに、これは実装の品質に依存しますが、オプションAは文字列の配列を動的に構築し、ドキュメント本体を何らかの合理的な方法でエンコードすると仮定します。)

また、オプションBの場合、gzip以外の潜在的に適切な圧縮方法をお勧めしますか?

役に立ちましたか?

解決

gzipは、送信/保管コストがCPU時間のコストと比較して高すぎない場合にのみ優れたアルゴリズムです。 bzip2、7zip、および特に自然言語のさまざまな PPM アルゴリズムを使用すると、より高い圧縮率を得ることができます。 。

もちろん、重要なのは計算(および静的対動的メモリ要件)対圧縮比だけではありません-さまざまな圧縮形式により、さまざまな程度の効率的なランダムアクセスシーク、低遅延ストリームデコード、および圧縮データの連結が可能になります(例: cat a.gz b.gz | gunzip -c は、 gunzip -c a.gz; gunzip -c b.gz

と同じです。

他のヒント

gzipを使用するだけで間違いなく最も簡単で、おそらく十分です。文字列テーブルを試し、それをgzip圧縮して、gzip単独の場合よりも圧縮率がわずかに向上するかどうかを確認することをお勧めします。

投稿で対処されていない多くのことに依存します。

実装が簡単なので、最初にzipメソッドを試してみませんか。その後、速度/圧縮の要件を満たしていれば完了です。次の機能に進むことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top