2012-04-09 3 views
0

私のプログラムにウィジェットクラスの子が含まれ、paint()関数が子に対して再定義されています。アイドル時にGUIプログラムがCPUサイクルを消費する理由を確認する

プログラムがアイドル状態であっても、多くのCPUサイクルを消費しています。私のpaint()関数内のprintf()は、paint()が呼び出されると予想されるときにのみ呼び出されることを示しています。

消費元を特定する他に何ができますか?

は私が本当に基本何かに戻って一歩を踏み出してみましょう

を追加します。 XCode 3では、 "Debug"ビルドと "Release"ビルドのどちらかを選択するビルド設定がありましたが、XCode 4ではそのような設定は表示されません。どのようにしてデバッグビルドを生成しますか?おそらく私の元の質問に対する答えは、プログラムがアイドルループ中に「一時停止」(消えた別のボタン)を押すことと同じくらい簡単です。

+0

デバッガ(gdbなど)を使用しようとしましたか?また、もし利用可能であれば、 'strace'や' ltrace'や 'valgrind'などのツールを使うこともできます(これはメモリリークが疑われる場合に最も適切です)。 –

+0

Instrumentsを使用してCPU使用率を確認します。 – zaph

答えて

0

これはMacOS Xcodeの開発であると仮定すると、Xcodeに付属のprofilerを使用することができます。

そうでない場合は、使用可能なプロファイラを使用してください。

使用可能なプロファイラがない場合は、アプリケーションから機能を徐々に取り除きます。あるいは、おそらくゆっくりではなく、バイナリ検索(つまり、機能の半分を削除)します。何でも簡単です。

アプリケーションに応じて、3つ目のこと(プロファイラを使用せずにリッピングするなど)が実際に勝利する最速のルートになる場合がありますが、時間をかけてプロファイラを使用することは価値があります。