Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Общие вопросы > Problem with clock() and long running programs |
Автор: alex35 26.3.2008, 08:36 |
Здравствуйте! Пожалуйста, подскажите как замерить время процессора (не системное время) для программы, при условии что время выполнения может быть много часов ? Стандартное использование clock() из библиотеки ctime,например: clock_t startTimer, endTimer; startTimer=clock() // //my program here // endTimer=clock(); runseconds = (double)(endTimer-startTimer)/CLOCKS_PER_SEC; не работает (по крайней мере на моем Linux), т.к. clock_t всего 32 бита (соответствует типу int), и следовательно при CLOCKS_PER_SEC=1000000 (в моей системе), clock() сбросится через менее чем 3000 сек, или около того. Заранее спасибо за Вашу помощь. |
Автор: korian 26.3.2008, 08:45 |
ну я так понимаю, что при многочасовой работе программы, необходимость знания микросекунд отпадает. поэтому вместо clock(), используем time() можно совместить два метода и выводить clock для не долгой работы и time для длительной. на скока я знаю clock() выводит пройденное время с момента старта программы (в том смысле, что не зависит от того, сколько времени процессор уделил этому процессу)... или под Linux clock() работает как-то по другому? |
Автор: Andrey44 26.3.2008, 08:51 | ||
Можно так попробовать ![]() |
Автор: alex35 26.3.2008, 09:00 |
1) необходимости в миллисекундах нет, это Вы верно заметили, однако time() измеряет как раз системное время, а на машине запускается много различных программ одновременно, это сервер; мне же нужно замерить именно процессорное время моей программы только. 2) программа запущена на Юникс, g++, не могу использовать библиотеки Windows. |
Автор: korian 26.3.2008, 09:27 |
в Windows для таких целей существует GetProcessTimes и GetThreadTimes. имху, задайте вопрос в ветку про линукс, чтобы узнать как получать именно процессорное время. |
Автор: xvr 26.3.2008, 14:53 |
Используй функцию times или getrusage |