VS2010ビルトインプロファイラーを使用しています 私のアプリケーションには3つのスレッドが含まれています。 スレッドの一つは、本当に簡単です:なぜ「最も個別の仕事を持つ機能」の合計が100%を超えることはできませんか?
while (true)
if (something) {
// blah blah, very fast and rarely occuring thing
}
Thread.sleep(1000);
}
Visual StudioはのThread.sleepがプログラム時間の36%を取ることを報告しています。 質問は「なぜ時間の100%ではないのですか?なぜMain
メソッドが時間の40%を費やすのか、私は間違いなく最初から最後までこのメソッドを実行していたのです。
ドゥプロファイラは、スレッドの数に結果をデバイド?
私の別のスレッドでは、そのメソッドが時間の34%を要することがわかりました。 それはどういう意味ですか?それは時間の34%しか働かないことを意味するのでしょうか、それともほとんどすべての時間に働きますか?
私は3つのスレッドが並行して実行されていて、メソッドの合計時間を300%にする必要があります(たとえば、アプリケーションが10秒間実行されると、これは各スレッドが10秒間実行されることを意味します。 3つのスレッドがある - それは完全に30秒になります)
profilier器具コード関数が入力されたときに測定し、出口、それらプロファイラはのThread.sleep(1000)1秒かかると考えています。 Thread.Sleep(1000) – javapowered
の中で何が起こるかは関係ありません。同様のコードをテストしました。計装では、99.9%の 'Thread.Sleep()'が期待どおりになっています。追加のスレッドを追加して試してみます。 –
@javapowered:明らかに、あなたは正しいです。 VSプロファイラは結果を100%に正規化します。 Start() 'の結果は匿名のラムダとの間で47%vs 53%になりました(明らかにスレッドの()ルーチン)と 'Thread.Sleep()'です。 –