5月にVisual Studio 2010のベータ1がリリースされて以来、パフォーマンスの第一人者 Rico Mariani氏を含んだVisual Studioの開発チームは、顧客からのフィードバックを元に パフォーマンス改善 に精力的に取り組んできた。
Rico氏は、Visual Studioのどの部分が改善されるのか、正確に言う立場にないが、彼が取り組んでいる技術的問題の詳細について話した:
…製品は、以前のバージョンよりもずっとマルチスレッド化されていて、ある場合には、スレッド間の同期が非常にうまくいっているとは、言えませんでした。また別な例として、フォグラウンドのスレッドがちゃんと反応するようにするために、バックグラウンドのスレッドを遅延させるように設計されているコードが原因で、実際全体が遅くなっていました。実際に、Sleepを取り除いたケースが2つあり、これは冗談ではないんです。同期をとる必要がない複数のスレッドをそうしているので、効果的な並列処理が実行されていない例もありました。また、システムに組み込まれている隠れた並行処理が、全く利用されていなかったり、要は、設計上、並行処理されてしかるべきところに、それが全く抜けている例もありました。
Microsoft Connect サイトをさっと見ると、いくつかのパフォーマンス問題が報告されている。Visual StudioのPMであるWeston Hutchins氏は、 “VS2010は、VS2008より遅い”と言う記事で、次のように答えている:
我々には専任のパフォーマンスチームがいて、この数カ月に立ち上がりが遅い件のような問題に取り組んでいます。なんとかベータ1の立ち上がりの30%ぐらいになりましたが、Visual Studio 2008よりまだ遅いです。原因の一つは、CLRを立ち上げることなのですが、これが立ち上げ時間の増加になってます。もっと改善するようにさらに検討中ですが、VS2008のレベルには行きそうにないですね。
Rico氏は、メモリ問題についても述べていて、過剰なメモリ消費の3つの主原因を上げている:
- マネージコードのイメージ、特にNGENによるネィティブ イメージ
- 非共有、アンマネージのヒープ
- メモリ リーク
マネージコードのイメージに関して言えば、主問題は、DLLのほんの一部しか使用されないのに、依存性が増え、余りに多くの依存性を持つ結果になることです。ヒープに関しては、基本的にはCreateHeapを使って、プライベートなヒープを使いすぎることで、アプリケーションには、余りに高価かつ十分に使われていないヒープになってしまっています。メモリリークはありますが、VS2010は、マネージコードのアプリケーションなので、リークを見つけるのが容易です。
氏は、最後に次のように言っている:
私から見ると、製品は、ずっとずっと良くなってきています。