![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
alex35 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 2.9.2006 Репутация: нет Всего: нет |
Здравствуйте!
Пожалуйста, подскажите как замерить время процессора (не системное время) для программы, при условии что время выполнения может быть много часов ? Стандартное использование 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 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
ну я так понимаю, что при многочасовой работе программы, необходимость знания микросекунд отпадает.
поэтому вместо clock(), используем time() можно совместить два метода и выводить clock для не долгой работы и time для длительной. на скока я знаю clock() выводит пройденное время с момента старта программы (в том смысле, что не зависит от того, сколько времени процессор уделил этому процессу)... или под Linux clock() работает как-то по другому? Это сообщение отредактировал(а) korian - 26.3.2008, 09:00 |
|||
|
||||
Andrey44 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1501 Регистрация: 4.12.2006 Где: На работе Репутация: 2 Всего: 26 |
Можно так попробовать ![]() -------------------- ????? ??, ??????? ?????. ![]() |
|||
|
||||
alex35 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 13 Регистрация: 2.9.2006 Репутация: нет Всего: нет |
1) необходимости в миллисекундах нет, это Вы верно заметили, однако time() измеряет как раз системное время, а на машине запускается много различных программ одновременно, это сервер; мне же нужно замерить именно процессорное время моей программы только.
2) программа запущена на Юникс, g++, не могу использовать библиотеки Windows. |
|||
|
||||
korian |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
||||
|
||||
korian |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
в Windows для таких целей существует GetProcessTimes и GetThreadTimes.
имху, задайте вопрос в ветку про линукс, чтобы узнать как получать именно процессорное время. |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 60 Всего: 223 |
Используй функцию times или getrusage
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |