問題タブ [plinq]
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.
c# - PLINQ と LINQ: LINQ では OutOfMemoryException が発生するが、PLINQ では発生しない
これは興味深いものです。まずセットアップ:
- 8GBのRAM
- ウィンドウズ 7 プロ x64
- VS2010 アルティメット
LINQ/PLINQ を使用してデータを処理するメモリ集約型アルゴリズムがあります。初期の実装は PLINQ に依存していました。単体テストは成功します。しかし、驚くべきことに、PLINQ と LINQ を使用することでどのようなパフォーマンス上の利点が得られるかを確認しようとしているときに、並列処理が無効になっている場合、同じテストが OutOfMemoryException で失敗します。
合理的な説明はありますか?私はそれを一貫して再現できます。私はチェックしませんでしたが、メモリではなく、スレッドモデルに応じて異なる方法で割り当てられるリソースが不足している可能性がありますか? アイデア?
c# - Parallel Linq - 戻ってきた最初の結果を返す
PLINQ を使用して、シリアル ポートをテストして GPS デバイスかどうかを判断する機能を実行しています。
一部のシリアル ポートは、すぐに有効な GPS であることがわかります。この場合、最初にテストを完了したものが返されるようにしたいと考えています。残りの結果を待ちたくありません。
PLINQ でこれを行うことはできますか? それとも、タスクのバッチをスケジュールして、1 つが返されるのを待つ必要がありますか?
c# - PLINQ を使用して XmlWriter に書き込むことはできますか? 他のストリーム/ライターはありますか?
すべてのステージで PLINQ を使用しますが、XML 出力を生成します。私は試してみましたが、奇妙な例外が発生しました。それで、非同期出力を可能にするトリックがあるのだろうかと思います。
c# - PLINQ Extensionsを使用すると、スレッドIDは転送されますか?
.AsParallel()。ForAll()を使用して、ASP.NET要求のコンテキストでコレクションを並列に列挙しています。列挙メソッドは、System.Threading.Thread.CurrentPrincipalに依存しています。
System.Threading.Thread.CurrentPrincipalをASP.NET要求を処理しているスレッドのHttpContext.Current.Userに設定するために使用される個々のスレッドに依存できますか、それとも自分で管理する必要がありますか?
質問をする別の方法は、PLINQによって使用されるスレッドが、操作を呼び出したスレッドのIDを継承するかどうかです。
.net - AsParallel() と内部バッファ サイズ
AsParallel() が事前に読み取り、内部バッファに入れるアイテムの量を制限するにはどうすればよいですか?
次に例を示します。
アイテムを 1 つ消費し、スリープし、列挙を停止します。私のマシンでは 526400 と出力されます。私の実際のプロジェクトでは、各アイテムに数千キロバイトが割り当てられます。AsParallel() は多くのアイテムを前もって読み取るため、メモリ消費が非常に悪くなり、CPU が浪費されます。
WithMergeOptions(ParallelMergeOptions.NotBuffered) を入れると少し役に立ちます。4544 と出力されますが、それでも私には多すぎます。
Enum() で待機すると、メイン スレッドでループがフリーズします。
c# - PLinq を使用したリポジトリ パターン
私は Plinq と Repo パターンにかなり慣れていません。fx 4.0 で dbml、PLinq を使用してリポジトリ パターンを実装するための参照とガイドラインが必要です。
c#-4.0 - LINQ と PLINQ: オーバーヘッドがメリットを上回るのはいつですか?
私は基本的にeコマースタイプのプロジェクトに取り組んでいます。私たちのアーキテクトはクライアントから PLINQ を使用するように指示を受けました。PLINQ は LINQ よりもはるかに有益であり、並列で動作し、プロセッサのすべてのコアを使用するため、迅速な応答が得られます。クライアントの提案は、可能であれば PLINQ + リポジトリです。
だから私は知りたいだけです, どれが中小アプリに従うのが良いか. Plinq + リポジトリを使用することは可能ですか。私の調査結果によると、スタッフを適切に処理していない場合、Plinq は linq よりも多くのオーバーヘッドがあることがわかりました。私を助けてください。
c# - I/O に大きく依存するジョブを適切に並列化する方法
大量のデータを処理する必要があるコンソール アプリケーションを構築しています。
基本的に、アプリケーションは DB から参照を取得します。参照ごとに、ファイルの内容を解析し、いくつかの変更を加えます。ファイルは HTML ファイルであり、プロセスは RegEx 置換 (参照を見つけてリンクに変換する) で重い作業を行っています。結果はファイル システムに保存され、外部システムに送信されます。
プロセスを順次再開すると、次のようになります。
私のプログラムは正しく動作していますが、非常に遅いです。そのため、プロセスを並列化したいのです。
ここまでで、 AsParallel を追加して単純な並列化を作成しました。
この単純な変更により、プロセスの所要時間が短縮されます (25% 短縮)。ただし、並列化について私が理解していることは、I/O が魔法のように 2 倍になるわけではないため、I/O に依存するリソースを並列化する場合、あまりメリットがない (または、さらに悪いことにメリットが少ない) ということです。
そのため、プロセス全体を並列化するのではなく、依存関係のあるチェーン キュー タスクを作成するようにアプローチを変更する必要があると思います。
IE、次のようなフローを作成する必要があります。
キュー読み取りファイル。終了したら、Queue ParseHtml. 完了すると、Queue は WS に送信し、ローカルに書き込みます。終了したら、結果をログに記録します。
しかし、私はそのような考えを実現する方法を知りません。
コンシューマー/プロデューサー キューのセットで終了する気がしますが、正しいサンプルが見つかりませんでした。
さらに、メリットがあるかどうかもわかりません。
アドバイスをありがとう
[編集]実際、私は C# 4.5 を使用するのに最適な候補です... もしそれが rtm だったら:)
[編集 2]正しく並列化されていないと思わせるもう 1 つのことは、リソース モニターで、CPU、ネットワーク I/O、およびディスク I/O のグラフが安定していないことです。1 つが高い場合、他は低から中程度
linq - linq と plinq の違い
これら2つの違いは何ですか?
比較する最良の方法は何ですか?
それは常により良い plinq ですか?
plinq を使用する場合
c# - Parallel Linq to Object コレクション
Plinq (Parallel linq ) を使用してオブジェクト コレクションを試したときに基本的な質問がありましたが、Plinq と通常の操作では実行時間に大きな違いがないことがわかりました。誰でも私のコードをチェックして、なぜそうなったのかアドバイスしてもらえますか。このコードを i7 プロセッサで実行しました。
上記のコードの結果は
経過時間: 6:411 秒: パラレル モードでのミリ秒
経過時間: 6:68 秒: 通常モードのミリ秒