.NET4.0 の並列処理を試してみた その3 : サーバー GC

id:siokoshou:20090717、id:siokoshou:20090721、id:siokoshou:20090722 に続く TPL の記事。ベータ2の改良点がパラレルチームの blog に投稿されています。

でも、今回はそんなのがどうでもよくなるほど驚いたネタ。
ベータ2で7月に試したコードを実行してみると特にパフォーマンスに変化はありませんでした。しかし、掲示板でコアが多いほうが遅いんだけどなんで?って質問があって、その答えにこんなものが。

In addition to Andy's good questions, have you tried enabling the server GC? If not, you should try that as well, by creating a .config file for your application containing:






Parallel.For Slows Down with more cores

サーバーGCを試してみてとのこと。
さっそく試してみると、パフォーマンスがぐぐっとアップしました。前回はタスクを大量につくらないように変更してパフォーマンスを上げましたが、そのような小細工をしていないコードがそれにせまるほどの約2倍も高速化しました。一番速いのはやはりタスクをほとんど作らないパターンで、これもごくごくわずかですが速くなりました。

プロセッサが 2 つ以上のコンピュータでは、サーバーのガベージ コレクションが最速のオプションとなります。

<gcServer> 要素

え?そうだったの!?ちょっといろいろ試してみる…。

結論 : コアが多い場合はサーバー GC を試してみるといいことあるかも。