Получение времени ЦП, затраченного на процесс, против мирового времени, потраченного на проблему процесса С ++ - PullRequest
3 голосов
/ 07 февраля 2011

Я использую два разных способа получения time clock () и getLocalTime (), потому что я хочу, чтобы и время CPU тратилось на мой процесс, и время настенных часов, потраченное на этот процессВ настоящее время я делаю это:

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 секунд), и я знаю, что процессор не тратит так много времени на процесс.Я использую правильные функции?Спасибо.

Ответы [ 3 ]

1 голос
/ 08 февраля 2011

На самом деле нет кроссплатформенности, но в Windows есть две возможности:

  • GetProcessTimes () : возвращает время, потраченное процессом в режиме ядра и режиме пользователя
  • QueryProcessCycleTime () : возвращает количество циклов ЦП, затраченных процессом (требуется Windows Vista).

Сам не использовал их, но я считаю, что обадаст те же результаты

1 голос
/ 07 февраля 2011

В системах Unix время ЦП можно получить с помощью getrusage ().

0 голосов
/ 08 февраля 2011

clock() не подходит для истекшего времени. Под окнами определено возвращение истекшего времени стены, в системах типа Unix - истекшее время процессора.

Я уверен, что должно быть портативным решением, хотя я не уверен, где искать. Я бы поохотился через повышение для начала.

...