問題タブ [stream-compaction]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
32461 参照

python - Python で文字列を圧縮または圧縮する方法

文字列をWebサービスに送信するPython「スクリプト」を作成しています(C#で)。帯域幅と MB データが制限されているため、この文字列を圧縮または圧縮する必要があります (ええ、非常に制限されているため大文字で)。

ファイルに変換してから、ファイルを圧縮することを考えていました。しかし、文字列を直接圧縮する方法を探しています。

文字列を圧縮または圧縮するにはどうすればよいですか?

0 投票する
1 に答える
145 参照

json - JSON ログ ファイルの圧縮

行区切りの JSON レコードを含むファイルがあるとします。

IDの最後のレコードのみを保持することにより、そのようなファイルを圧縮したいと思います。たとえば、上記の例の場合、出力として持ちたいと思います。


tldr; uniq行区切りの JSON で動作する (そして高速な) はありますか?


入力ファイルには 10 億のレコードが含まれている可能性があり、そのうちの 10 ~ 20% のレコードを破棄できます。

私はさまざまなアプローチを試しました:

  1. 見たID

    「見た」ID のセットをメモリに保持します。これはメモリ不足です。

  2. 並べ替えと一意

    最初に「id」でファイルを並べ替えます (安定した並べ替えを使用するため、順序が保持されます)。次に、ファイルをもう一度実行し、最後のレコードを保持します。これは、通常の UNIXsort | uniqアプローチに似ています。ここではソートにコストがかかり、おそらく作業が多すぎます。

  3. オフセットと長さの情報を抽出する

    ファイルからオフセットと長さの情報と ID を抽出します。

    /li>

そして、圧縮されたセットに属するレコードを見つけます。次に、ファイルをシークして読み取ります。この情報の抽出はかなり高速ですが、レコードを抽出するために何百万ものシークと読み取りが行われるため、このアプローチは遅くなります。


より優れた、より高速な (または最速の) アプローチは何でしょうか? この種の問題を解決する既存のツールはありますか?

0 投票する
3 に答える
3946 参照

algorithm - CUDA ストリーム圧縮アルゴリズム

0整数の配列を取り、順序を維持するかどうかにかかわらず、すべての を削除する CUDA を使用して並列アルゴリズムを構築しようとしています。

例:

グローバル メモリ: {0, 0, 0, 0, 14, 0, 0, 17, 0, 0, 0, 0, 13}

ホスト メモリの結果: {17、13、14、0、0、...}

最も簡単な方法は、ホストを使用して0を時間内に削除するO(n)ことです。しかし、周り1000の要素があることを考えると、送信する前にすべてを GPU に残して、最初に圧縮する方がおそらく高速です。

推奨される方法は、各スレッドが (任意の順序で) スタックにポップおよびプッシュできるように、オンデバイス スタックを作成することです。ただし、CUDAにはこれが実装されているとは思いません。

すべてのスレッドが書き込みを完了するまで、同等の (ただしはるかに遅い) 方法は、書き込みを試行し続けることです。

O(f(x))このメソッドは、時間内に実行されるという点でのみ利点があります。ここf(x)で、 は配列内にあるゼロ以外の値の平均数です (f(x) ~= ln(n)私の実装では、したがってO(ln(n))時間ですが、高いO定数があります)

最後に、クイックソートやマージソートなどのソートアルゴリズムも問題を解決し、実際にはO(ln(n))相対時間で実行されます。ゼロとゼロの要素のペアと非ゼロの非ゼロの要素のペアを並べ替える (交換する) 時間を無駄にする必要がないため、これよりも高速なアルゴリズムが存在する可能性があると思います (順序を維持する必要はありません)。

したがって、どの方法が最も速いかはよくわかりませんが、これを処理するより良い方法があると思います。助言がありますか?

0 投票する
5 に答える
12208 参照

message-queue - Kafkaでログの圧縮が機能しているかどうかをテストするには?

Kafka 0.8.1.1 の server.properties ファイルに変更を加えました。つまり、トピックの作成中に追加log.cleaner.enable=trueして有効にしました。cleanup.policy=compact今テストしているとき、次のメッセージをトピックに次の(キー、メッセージ)でプッシュしました。

  • オフセット: 1 - (123、abc);
  • オフセット: 2 - (234、デフォルト);
  • オフセット: 3 - (345, ghi);
  • オフセット: 4 - (123、変更)

ここで、前の入力と同じキーで 4 番目のメッセージをプッシュしましたが、メッセージを変更しました。ここで、ログの圧縮が明らかになるはずです。Kafka ツールを使用すると、トピック内の 4 つのオフセットすべてを確認できます。ログの圧縮が機能しているかどうかを知るにはどうすればよいですか? 以前のメッセージを削除する必要があります。または、新しいメッセージがプッシュされているため、ログの圧縮が正常に機能しています。log.retention.hoursまたはtopic.log.retention.hoursまたはlog.retention.size構成と何か関係がありますか? ログの圧縮におけるこれらの構成の役割は何ですか。PS - Apache ドキュメントを徹底的に調べましたが、まだ明確ではありません。

0 投票する
1 に答える
664 参照

algorithm - CUDA のインデックスに基づくストリームの圧縮と変換

ここに示されているように、ストラム圧縮操作を実行したい float の配列があります: Parallel Prefix Sum (Scan) with CUDA、および値とアドレスまたは元の要素に基づいて変換を適用します。

たとえば、値が {10,-1, -10, 2} の配列があり、絶対値が 5 より大きいすべての要素を返し、値とそのアドレスを取得する変換を適用したいとします。配列。ここでの結果は {transform(10,0),transform(-10,2)} になります。

これで推力を使用しようとしていますが、このコードは大きな配列で頻繁に実行されるため、理想的には、バッファーと配列の複数のトラバーサルを使用しません。

セカンダリ配列を割り当てたり、複数のトラバーサルを実行したりせずに、やりたいことを実行することは可能ですか? はいの場合、そのようなコードは実際に存在しますか? または、少なくとも、私の目標を達成するために作成できる推力またはその他のライブラリの機能へのポインタを誰かが持っていますか?

0 投票する
1 に答える
160 参照

git - gitにはログ圧縮の概念がありますか?

git バージョン管理システムは一種の分散ログです (概念的にはラフトコンセンサス プロトコルと似ています)。

Raft およびその他の一部のシステムにはログ圧縮の概念があるため、新しいクライアントは変更を適用するために変更セット全体をトラバースする必要はありません。

私の質問は次のとおりです。gitにはログ圧縮の概念がありますか?