3

プロセスに費やされた CPU 時間とこのプロセスに費やされたウォール クロック時間の両方が必要なため、time clock() と getLocalTime() を取得する 2 つの異なる方法を使用しています。現在、私はこれを行います:

printf("CPU Time: %gms \n", (((double)(finish-start)) / CLOCKS_PER_SEC)*1000.0);
printf("Clock Time: %ldms \n", (end.sec-begin.sec)*1000+(end.msec-begin.msec));

しかし、どちらもまったく同じ結果が得られます。(約30秒実行されているもので)CPUがプロセスにそれほど多くの時間を費やしていないという事実を知っています。正しい関数を使用していますか? ありがとう。

4

3 に答える 3

1

Unix システムでは、CPU 時間は getrusage() によって取得できます。

于 2011-02-07T20:30:56.253 に答える
1

クロス プラットフォームではありませんが、Windows では次の 2 つの可能性があります。

  • GetProcessTimes() : プロセスがカーネル モードとユーザー モードで費やした時間を返します
  • QueryProcessCycleTime() : プロセスが消費した CPU サイクル数を返します (Windows Vista が必要)。

自分では使っていませんが、どちらも同じ結果になると思います

于 2011-02-07T22:29:09.253 に答える
0

clock()ポータブル経過時間に適したツールではありません。Windowsでは、経過したウォール時間を返すように定義されています。UNIXタイプのシステムでは、経過したプロセッサ時間を返します。

ポータブルなソリューションがあるはずですが、どこを見ればよいのかわかりません。私は最初にブーストを探します。

于 2011-02-07T21:08:22.980 に答える