[C#]ForEachメソッド

ForEachメソッドというものがあることを、この記事を読んで思い出しました。
連載! とことん C# - 第 24 回 ラムダ式と "外の世界" とのやりとり
ここではラムダ式での注意点について書いており、ForEachメソッドのことばかりを
書いているわけではないです。ただ、
foreach 文よりも、コレクションのメンバー (メソッド) である ForEach メソッドの方が高速である
という記述が気になりました。普段から、コレクション全体の処理でforeach 文でのループを
よく使うので、ちょっと考え直さないといけないかもしれません。
 
また、このForEachメソッドとは別のものもあります。
方法: スレッド ローカル変数を持つ Parallel.ForEach ループを記述する

スレッド ローカル変数を持つ ForEach メソッドを記述する方法を次の例に示します。ForEach ループが実行されると、そのソース コレクションが複数のパーティションに分割されます。各パーティションには、"スレッド ローカル" 変数が個別にコピーされます ("スレッド ローカル" という用語は少し不正確です。1 つのスレッド上で 2 つのパーティションが実行されることがあるからです)。

この例のコードおよびパラメーターは、対応する For メソッドによく似ています。詳細については、「方法: スレッド ローカル変数を持つ Parallel.For ループを記述する」を参照してください。

総当たり処理でも並列化できるものは、こういう工夫が必要ですね。

特にマルチコアのCPUが普通の世の中ですと、特にsmile_nerd

About these ads

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中

フォロー

新しい投稿をメールで受信しましょう。

%d人のブロガーが「いいね」と言っています。