Visual Studio 2008 SP1には、実行時のバグを紹介したり、私はクレイジーだしましたか?

StackOverflow https://stackoverflow.com/questions/1355320

質問

私は一体、最新の(非ベータ版)のVisual Studio 2008 SP1で何が起こっているかを把握しようとしている私の脳を障るしてきました

のOpenMPで構築された私のアプリが100%にCPU使用率をもたらし、デバッガで信じられないほど遅い実行されます。それらはデバッガの外部で実行されている場合、それは単にゆっくり(リリースビルド用)を実行します。

インテル®スレッドビルディングブロックライブラリで構築された私のアプリ、または自分自身のスレッドチームの実装は、(リリースビルド用)デバッガの外部で実行する場合よりも、デバッガで実行速度が遅います。

私はSP1がインストールされていなかった私の他の開発マシンに行くときは、

、状況が異なっています。外部のデバッガで実行されている、または、プログラムのパフォーマンスには影響を与えません。 OpenMPのは(この問題を把握するために憤激の外に急いで書かれた)ビルディング・ブロックや私自身のスレッドのチームコードをスレッドんので、自分のアプリケーションを高速化します。

これは、デバッガのアプリに作られた全く変更、ちょうど内外それを実行し、または、定期的にVisual Studioの対SP1です。

私は、私は私の首を突き出しと他の誰かがこれは彼らに何が起こっている可能性があることを認識期待して何かを言っているGoogleでこのことについては何も見つかりませんでした。その、または私は物事を見ています。

のいずれか
役に立ちましたか?

解決

はい。特定のケースで。私たちは、SP1に切り替えた後、非常に景気減速の似たような状況を経験しました。この原因は例外でした。私たちは、それが失敗した、と例外をキャッチ、辞書にキーにアクセスしようとするパターンの使用の多くを作ったデータモデルを持っています:

try {
  var a = dict[key];
} catch(KeyNotFoundException) {
  dict[key] = default;
  a = default;
}

これはあくまでも一例ですが、原因はまったくの例外でした。何らかの理由で、VSは、デバッガだけに、非常に遅いです。注、これは以前にそうであったが、それは新しいパッチで大幅に悪化していた。

解決策は単純に、常にテストを使用することです。それは多くのことを起こるか何かであれば、あなたの呼び出しは、それを呼び出す前に例外が生成されます場合は、上記の辞書例えば、.TryGetまたはカスタムコードチェックでを使用します(これの代わりに「例外」の事の「期待」のものです)ます。

詳細:例外やパフォーマンス

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top