現在、(C#) アプリのパフォーマンス分析のために PerfView を使用しています。ただし、通常、これらのアプリは多くのデータベース呼び出しを使用します。そこで、次のような質問を自問しました。 - リポジトリでどれくらいの時間が費やされているか - (SQL クエリが返されるのを待つのにどれくらいの時間が費やされていますか?) -> これが PerfView で発見できるかどうかさえわかりません
しかし、私のトレースからは、有用な結果はほとんど得られません。「Any Stacks」ビューでは、(リポジトリでグループ化を使用すると)リポジトリで1.5秒が費やされることがわかります(呼び出し全体は約45秒です)。リポジトリはデータベースを大量に呼び出すため、これは実際には真実ではないことを私は知っています。
CPU はこの期間に何もすることがないため、SQL クエリが完了するのを待っているときに CPU メトリックがキャプチャされないため、私の時間にはリポジトリのデータ変換時間などが含まれているだけですか?
助けてくれてありがとう!
編集:
私が見逃したのは、スレッド時間オプションをオンにして、ブロックされたコードの時間を取得することです(これは、データベース呼び出し中に起こっていると思います)。これですべてのスタックを取得しました。興味のないものを除外するだけです。しかし、私はどこにも行かないようです。
「スレッド時間」を使用するときに特に興味深いのは、BLOCKED_TIME です。しかし、それで時代はずれていると思います。スクリーンショットを見ると、CPU_TIME が 28,384 であることがわかります。これはミリ秒 (afaik) ですが、BLOCKED_TIME は 2,314,732 であり、ミリ秒にはなりません。したがって、CPU_TIME のパーセンテージは 1.2% と非常に低くなりますが、70 秒のうち 28 秒は依然として多いです。したがって、包括的パーセンテージの時間は、ここではリンゴとオレンジを比較しています。誰か説明できますか?