1

標準 C ライブラリ関数の 1 つに時間がかかりすぎて、システム全体 (一連のプロセス) が基本的に「しゃっくり」していると思われるパフォーマンスの問題があります。案の定、ライブラリ関数呼び出しをコメント アウトすると、しゃっくりはなくなります。これにより、この種のことを証明するためにどのような標準的な方法があるかを調査するようになりました。関数をテストして、システム全体が1秒間ハングするかどうかを確認するためのベストプラクティスは何ですか?

少なくとも、呼び出されている関数と目に見えるフリーズを明確に関連付けたいと思います。

ありがとう

4

2 に答える 2

0

あなたが言う「しゃっくり」の意味を理解しようとしています。私はあなたのプログラムが次のようなことをしていると想像しています:

while (...){
  // 1. do some computing and/or file I/O
  // 2. print something to the console or move something on the screen
}

通常、印刷またはグラフィック出力は主観的に継続的にハミングしますが、計算部分に時間がかかる間、フリーズしているように見えることがあります。

そうですか?

もしそうなら、実行中の状態ではほとんどの場合ステップ 2 にあると思いますが、しゃっくり状態ではステップ 1 に時間を費やしています。

ステップ 2 をコメント アウトして、ほぼすべての時間をヒカップ状態で過ごし、デバッガーの下で一時停止して、何をしているかを確認します。この手法を使えば、ほとんど労力をかけずに、問題が何であるかを正確に知ることができます。

于 2010-05-25T02:31:28.630 に答える
0

このようなことを判断する最善の方法は、プロファイリング ツールを使用して、各関数呼び出しに費やされた時間に関する情報を取得することです。

メモリのブロックを予約する関数の設定に失敗しました。次に、コードのさまざまなポイントで、現在の時刻を含む文字列をメモリに書き込みます。(これにより、ディスプレイへの書き込みに関連する遅延が回避されます)。コードを実行したら、メモリを取り出して解析し、コードの各部分にかかる時間を判断します。

于 2010-05-24T23:45:48.130 に答える