Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: Системное программирование > Время выполнения скрипта


Автор: halyavchik 7.6.2003, 08:13
Повторюсь как определить время выполнения скрипта , ну , скажем, с точностью до деститысячных?

Автор: HalkaR 7.6.2003, 10:43
Есть такой модуль для Perl'а Benchmarck кажется - вот с его помощью можно очень точно определить время работы скрипта.

Автор: Unregistered 17.6.2003, 14:44
А, я так делаю
$start_time = times();
# код скрипта
$stop_time = times();
printf "Скрипт работал %.3f секунд \n", $stop_time - $start_time ,\n;
Кстати практика показывает, что скрипт запущенный последовательно несколько раз отрабатывает за разное время (в пределах 0,1сек.), так, что точность более чем 1/10 сек. не имеет особенного смысла (имхо конечно)

Автор: acp 17.6.2003, 22:57
Цитата
практика показывает, что скрипт запущенный последовательно несколько раз отрабатывает за разное время (в пределах 0,1сек.), так, что точность более чем 1/10 сек. не имеет особенного смысла (имхо конечно)



Имеет. Если тестировать скрипт, то запускать его надо в цикле. Раз так 10000. Вот тогда можно получить какие-то хорошие результаты.

Автор: Secandr 16.8.2004, 15:36
А без модулей ни как нельзя?

Что за функция times ?

Автор: korob2001 17.8.2004, 21:50
Цитата
А без модулей ни как нельзя?

Если необходимо узнать точное время выполнения скрипта, то думаю нельзя. Можно воспользоваться функцией time(), но проблема в том, что почти все программы работают меньше секунды, потому узнать точное время не получится.
Цитата

Что за функция times ?

Мне кажется он имел ввиду функцию time().

Автор: Secandr 18.8.2004, 08:33
Я нашёл в манулах функцию times, но не доконца понял что она делает, вот и спросил тут, поскольку новый топик создавать лень было.

korob2001 У меня результат работы появлялся только через 30-40 сек в мозиле, я долго мучался, а потом понял, что это глюк не скрипта, а мозилы. В эксплорере всё работает быстрее, время ~5 сек.

Автор: korob2001 18.8.2004, 18:41
Secandr
Я думаю твой скрипт работает намного быстрее. Если ты ожидешь ответа сервера 5 секунд, это ещё не значит что и скрипт отработал 5 секунд. Основное время из этих 5 секунд уходит на пересылку запроса и ответа сервера, а так же на запуск внешнего интерпритатора Perl, если конечно ты не юзаешь mod_perl.

Автор: ElectricalStorm 18.8.2004, 18:56
use Benchmark; # !!!
Добавлено @ 19:06
если не получиться спрашивайте я пример тада напишу

Автор: Secandr 19.8.2004, 08:44
Я разобрался. Скрипт работает ~0.6 сек, поскольку тащит логи телнетом с разного железа, потом парсит это всё и выдаёт в одной большой таблице (экрана на два-три).

В итоге такой расклад
  • скрипт работает ~0.6 сек
  • как тормозит этот процес апач я не знаю (не знаю как сосчитать время)
  • Браузер (время на отрисовку таблицы)
    • Мозила - ~20-40 сек (это плата, за то что браузер всё отрисовывает налету)
    • Эксплорер - ~4-6 сек
Но всё равно я минимизировал трафик, разработал оптимальный алгоритм выполнения скрипта и стало пошустрее. Теперь время ближе к 20 сек в мозиле и 4 в эксплорере.

P.S. временем на транспортировку принебрегаем, поскольку размер 75.03 KB (76827 bytes), а сеть 100Mb
Добавлено @ 08:48



но всё же мне интересно что такое times!

Автор: GoodBoy 19.8.2004, 10:13
Цитата(Secandr @ 19.8.2004, 09:44)
но всё же мне интересно что такое times!

times
Возвращает 4-х элементный массив значений: ($user, $system, $cuser, $csystem)=times;
где:
$user - пользовательское время процесса в секундах.
$system - системное время текущего процесса.
$cuser - время процесса-потомка текущего прцесса.
$csystem - его системное время.

Автор: Secandr 19.8.2004, 10:23
это я прочитал в мане smile.gif

А что значит
Цитата
$user - пользовательское время процесса в секундах.
qstn.gif

Автор: GoodBoy 19.8.2004, 11:21
Это значит сколько секунд работал твой процесс! формат: 0.00 кажется.

Автор: Secandr 19.8.2004, 11:33
это какраз и есть время работы скрипта smile.gif

Автор: GoodBoy 19.8.2004, 11:46
ну да! :-)))

Автор: Secandr 19.8.2004, 11:49
Вот им то я и считал tounge.gif
Так что можно без всяких библиотек!

Автор: GoodBoy 19.8.2004, 13:20
Ну принцип-то Перла знаешь - "Всегда есть более, чем 1 способ сделать это!" :-)))))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)