マイクロソフトが最初に発表して以来、私は.NETタスク並列ライブラリ(TPL)の開発に大きな関心を持って取り組んできました。
最終的にはTPLを活用することは間違いありません。私が質問しているのは、Visual Studio2010と.NET4.0がリリースされたときにTPLを利用し始めるのが理にかなっているのか、それとももう少し待つのが理にかなっているのかということです。
なぜ今すぐ始めるのですか?
- .NET 4.0タスク並列ライブラリは適切に設計されているようであり、いくつかの比較的単純なテストは、それが今日のマルチコアCPUで適切に機能することを示しています。
- 約7年前に最初のクアッドプロセッサDellPoweredge6400を購入して以来、複数の軽量スレッドを使用してソフトウェアを高速化することの潜在的な利点に非常に興味を持っています。当時の実験では、努力する価値がないことが示されました。これは主に、各CPUのキャッシュ(当時は共有キャッシュがありませんでした)とRAMの間でデータを移動するオーバーヘッドに起因していました。
- 競争上の優位性-一部のお客様は十分なパフォーマンスを得ることができず、今日TPLを使用してより高速な製品を構築できることは間違いありません。
- 楽しそうですね。はい、一部の開発者は鋭い棒で目を突くほうがいいと思いますが、パフォーマンスを最大化することを本当に楽しんでいます。
なぜ待つのですか?
- 今日のIntelNehalemCPUは、マルチコアサポートが成熟するにつれて私たちがどこに向かっているのかを表していますか?現在、単一のレベル3キャッシュを共有する4コアのNehalem CPUを購入できます。また、Visual Studio 2010 / .NET 4.0がリリースされるまでに、単一のレベル3キャッシュを共有する6コアCPUを購入できる可能性があります。明らかに、コアの数は時間の経過とともに増加しますが、アーキテクチャについてはどうでしょうか。コアの数が増えても、それらは引き続きキャッシュを共有しますか?Nehalemの問題の1つは、コア間に非常に高速な相互接続があるにもかかわらず、コアに不均一なメモリアクセス(NUMA)があるため、パフォーマンスが低下し、結果が予測しにくくなる可能性があるという事実です。将来のマルチコアアーキテクチャはNUMAを廃止できるでしょうか?
- 同様に、.NETタスク並列ライブラリは成熟するにつれて変更され、それを十分に活用するにはコードを変更する必要がありますか?
制限事項
- コアエンジンは100%C#であり、完全な信頼なしで実行する必要があるため、.NETAPIの使用に制限されています。