Получение времени ЦП, затраченного на процесс, против мирового времени, потраченного на проблему процесса С ++

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

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 ответа

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

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

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

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

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

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

Другие вопросы по тегам