![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| korob2001 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2871 Регистрация: 29.12.2002 Репутация: 31 Всего: 61 |
А что именно не понятно?
Если тебе нужно вычислить время работы отдельного участка программы, то используй Benchmark:
Если нужны доли секунд, TimeHiRes. А вот что написано в "Программирование на Perl", по поводу times()
Это сообщение отредактировал(а) korob2001 - 8.11.2005, 00:55 -------------------- "Время проходит", - привыкли говорить вы по неверному пониманию. "Время стоит - проходите вы". |
||||
|
|||||
| Usya |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Мне хотелось бы отдельно получить системное и пользовательское время. times() позволяет это делать, но почему некорректно работает вышеприведенный код?
На выходе имеем 0.234:0.015:0:0 0.484:0.015:0:0 0.718:0.015:0:0 Почему не учитывается sleep(1)? И что вообще учитывается, а что нет??? А вопрос возник в связи со следующей проблемой. Если не вдаваться в подробности, то можно сказать так - в одном из своих скриптов я написал
На выходе получаю ... Время генерации скрипта: 1.89:0.07:0:0 сек Время генерации скрипта: 7 сек ... либо что-то в этом роде. Никаких sleep-ов у меня правда нет, но в чем проблема в такой разнице понять не могу... --------------------
Я не волшебник, я только учусь... |
||||
|
|||||
| sharq |
|
||||||
![]() Perl Liker ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 13.12.2004 Где: Ростов-на-Дону Репутация: 23 Всего: 28 |
Если ты не правильно поставил постфикс у числа это не значит, что скрипт не правильно работает! Все правильно отработало, всего за 0.07 секунд. И ни какой разницы нет. Функция times, точнее ее второй элемент в списке выдает системное время отработки скрипта, а не время отработка в текущий момент, поэтому хаваются три твоих слипа и только потом печатается одно и тоже время. В этом случаю нужно использовать функцию time! И зачем делать слип и цикл, который по своей сути делает слип? Надеюсь, поймешь, в чем смысл на этом примере.
Это сообщение отредактировал(а) sharq - 8.11.2005, 20:26 -------------------- [color=gray]There's More Than One Way To Do It[/color] |
||||||
|
|||||||
| Usya |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
Кажется начал разбираться!!!!!!!!!!!!! Правда не все пока еще гладко. В отношении результатов последнего кода - если неправильно, поправьте 1) 1.89 сек - пользовательское время 2) 0.07 сек - системное время 3) 7 сек - фактическое время 4) время у sleep (в тестовом примере) возможно не относится ни к пользовательскому ни к системному, хотя с этим еще не до конца разобрался. Возможно я не прав. Фактическое время не всегда равно пользовательскому + системному http://www.regatta.cs.msu.su/doc/usr/share...ngd/2365c62.htm, поэтому korob2001
times() подойдет только сравнения времени работы скриптов (например при оптимизации кода) или для оценки времени работы так сказать в идеале в однопроцессорной системе. Для оценки фактического времени times не подойдет. sharq Я не совсем понял некоторые утверждения
В своем скрипте, когда приводил пример, я не использовал Time::HiRes и время time(), соответственно, измерялось в секундах. При этом это и есть фактическое время выполнения скрипта (при запуске оно прыгало от 2-х и до 8 сек), 0.07 получается - это только системное время. Кстати, что ты имел в виду под постфиксом? С этим я сталкивался только у декремента и инкремента.
Этот пример можно трактовать по-разному. Поясни в двух словах, что именно ты хотел показать? Да и еще, sleep в своем коде поставил, чтоб показать, что от него ничего не зависит... А на счет системного времени ты скорее всего прав. Пользовательское изменяется, а системное нет и не важно в списковом контексте выводятся данные или в скалярном. --------------------
Я не волшебник, я только учусь... |
||||||
|
|||||||
| Kiber_rat |
|
||||
![]() MACMANIAC ![]() ![]() Профиль Группа: Участник Сообщений: 276 Регистрация: 18.4.2002 Где: Ashdod, Israel Репутация: 7 Всего: 9 |
Хочу обратить внимание на одни спрятанные в траве грабли
А пока скриптик будет "спать" переведите системное время на полчасика вперед. Дополнительно хочу заметить что на многих серверах коррекция системного времени производится автоматически через timeservers по крону, так что вопрос о том насколько вероятно изменение системного времени не стоит. Возможно для сессий это окажется не критично, но знать о такой "фиче" не вредно Вот уже после написания узнал, что наши списались с разработчиком модуля Time::HiRes и он добавил в следующую версию дополнительную функцию clock_gettime() которая, будучи вызвана с константой CLOCK_MONOTONIC, вернет правильный интервал Это сообщение отредактировал(а) Kiber_rat - 9.11.2005, 01:10 -------------------- Best regards! @..@_____Ku6ep =*=______\______KPbIC
|
||||
|
|||||
| Usya |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 154 Регистрация: 7.6.2005 Репутация: нет Всего: нет |
По ходу дела больше идей не будет...
Впрочем пока можно немного остановиться на достигнутом Спасибо всем откликнувшимся за инфу и советы!!! --------------------
Я не волшебник, я только учусь... |
|||
|
||||
![]()
|
| Правила форума "Perl" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |