Синхронизация функции в программе на C ++, работающей в Linux - PullRequest
1 голос
/ 19 февраля 2011

Я пытаюсь рассчитать время выполнения функции моей программы на C ++, используя количество времени, которое требуется для выполнения в пространстве пользователя. Я попробовал команду clock_gettime (CLOCK_PROCESS_CPUTIME_ID, & start) изнутри программы, но я боюсь, что это время процессора, а не время пользователя, которое мне действительно нужно. Время "имя программы" в этом случае не будет работать, потому что я только синхронизирую функцию. Любая помощь будет отличной. Спасибо!

Ответы [ 3 ]

5 голосов
/ 20 февраля 2011

Используйте функцию times(), см .: http://linux.die.net/man/2/times

Это даст вам текущее пользовательское и системное время для вашего процесса.Вы можете вызывать его при входе и выходе из подпрограммы и вычитать.

Вы также можете использовать профилировщик, такой как gprof, который сделает все это автоматически для вас (но потребует дополнительных затрат).

1 голос
/ 25 июня 2013

Попробуйте увеличить: библиотека таймера.Это портативный и простой в использовании.Таймеры повышения отдельно показывают время настенных часов, время пользователя и системное время.

http://www.boost.org/doc/libs/1_53_0/libs/timer/doc/cpu_timers.html

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

Вы можете использовать gettimeofday () в качестве примера здесь .

Добавить эту функцию в свой код:

#include <sys/time.h> 

long myclock()
{
    struct timeval tv;
    gettimeofday(&tv, NULL);
    return (tv.tv_sec * 1000000) + tv.tv_usec;
}

и использовать ее для получения времени:

long start = myclock();

// do something
// ...

long end = myclock() - start;

std::cout << "[" << time->tm_hour << ":"<< time->tm_min << ":" << time->tm_sec << 
             "] time:" << std::setprecision(3) << end/1000000.0 << std::endl;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...