この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 3240|答える: 2

[出典] PLINQ並列クエリを用いた.NET/C#のパフォーマンス最適化

[リンクをコピー]
掲載地 2024/03/02 17:30:49 | | | |
並行クエリとは何ですか?

PLINQクエリの多くの側面は、非並列のLINQからオブジェクトへのクエリに似ています。 逐次LINQクエリと同様に、PLINQクエリは任意のメモリ内のIEnumerableまたはIEnumerableのデータソースに対して操作を行い<T>、実行を延期します。つまり、クエリが列挙されるまで実行が開始されません。 主な違いは、PLINQはシステム上のすべてのプロセッサを最大限に活用しようとしている点です。 この方法は、データソースをフラグメントに分割し、それぞれのフラグメントに対して別のワーカースレッド上の複数のプロセッサで並列クエリを実行することです。 多くの場合、並列実行によりクエリの実行速度が大幅に向上します。

並列実行により、PLINQは特定のクエリタイプに対して従来のコードと比べてパフォーマンスを大幅に向上させることができ、多くの場合、単にデータソースにAsParallelクエリ操作を追加するだけで済みます。 しかし、並列処理は独自の複雑さをもたらすため、すべてのクエリ操作がPLINQで高速に動作するわけではありません。 実際、並列処理は一部のクエリを遅くします。 したがって、ソートなどの問題が並列クエリにどのように影響するかを理解することが重要です。 詳細については、「PLINQにおける加速の理解」を参照してください。

簡単な例

コレクション内の10,000件のデータに対するコードは以下の通りです:



PLINQが使用しているその他の機能

1. AsSequentialを使い、プロセスに並列クエリを使いたくない場合は、この機能を使ってシーケンスクエリに復元できます。


2. AsOrderedを使うと、PLINQは並列で動作するため結果が順序通りでない場合があり、AsOrderedメソッドを加えることでクエリが可能です。


3. WithDegreeOfParallelismを使うことで、このプロパティはコンピュータ上で並列に並列するCUPの数を設定できます。


場面注記

多くの場合、クエリは並列化可能ですが、並列クエリを設定するコストがパフォーマンス向上を上回ることがあります。クエリが大量の計算を行わない場合やデータソースが小さい場合、PLINQクエリは順次LINQからオブジェクトへのクエリよりも遅くなることがあります。 Visual Studio Team ServerのParallel Performance Analyzerを使って、さまざまなクエリのパフォーマンスを比較し、処理のボトルネックを見つけ、クエリが並列実行か順次かを判断できます。

参考:ハイパーリンクのログインが見えます。





先の:【実用戦闘】OpenWrt luci-app プラグインチュートリアルのインストール
次に:SQL Serverは拡張イベントを使ってデッドロック問題を追跡します
 地主| 掲載地 2024/03/20 22:29:27 |
HuairongChen 2024年3月20日 16:05 投稿
私はParallelを使って同期並列処理を可能にし、パフォーマンスを倍増させましたが、データの並列処理の問題にも注意を払う必要があります...

アイテム+=1と入力します。 より明確なコントラストを出すためにthread.sleep(100)に置き換えてください
掲載地 2024/03/20 16:05:24 |


私は並列を使って同期並列処理を可能にし、パフォーマンスを倍増させましたが、データの並列処理の問題にも注意が必要です
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com