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