.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 を試してみるといいことあるかも。