Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Perl: Общие вопросы > измерение скорости кода |
Автор: zyxerr 22.12.2008, 17:32 |
Добрый день! . 1. вопрос по терминологии. Можно ли назвать "профилированием" посчет дельты времени с помощью объекта Time::HiRes? или это хронометраж? 2. вопрос по существу. Предположим, я хочу померять скорость регулярных выражений. Операция занимает одну миллионную секунды. Какой результат будет более точным: одиночная проверка или цикл из миллиона проверок(в целом - секунда)? По идее чем больше проверок, тем меньше погрешность. Но ведь чем больше проверок, тем больше вероятность влияния системных процессов, работающих в фоне |
Автор: KSURi 22.12.2008, 18:22 |
1. нет 2. скорее цикл из множества проверок. хотя не понятно, честно говоря, зачем вам это нужно. ЗЫ: не забудьте вынести регулярки в qr// =) |
Автор: zyxerr 22.12.2008, 18:30 |
1. т.е. это хронометраж получается 2. я пишу работу по оптимизации рег.выражений. Уже получил несколько интересных результатов. немного непонятно, зачем выносить регулярки в в qr// ... |
Автор: ginnie 22.12.2008, 18:42 |
zyxerr, 1. да, обычно результаты статистически обрабатываются (т.е. указывается количество выполнений строки и среднее время). 2. зависит от разрядности таймера. Если размерность более чем на порядок превышает время выполнения, то более точным будет среднее значение. На моем сервере Time::HiRes имеет разрядность до 0.000001, поэтому в Вашем случае оба результата можно проигнорировать - точность их одинаково неприемлемая. KSURi, что Вы подразумеваете под "профилированием"? |
Автор: KSURi 22.12.2008, 18:55 |
Профилирование - процесс выявления узких мест в программе, путем измерения времени работы каждого ее участка (участком может быть как одна строка/инструкция, так и целая подпрограмма). Если судить по вашему, то рефакторингом можно назвать любое изменение кода. Добавлено через 1 минуту и 48 секунд А вот википедия говорит, что в профилировку еще и проверка code coverage входит. Мне таким заниматься не приходилось. |
Автор: ginnie 22.12.2008, 18:59 |
KSURi, тогда другой вопрос: Почему нельзя назвать "профилированием" посчет дельты времени с помощью объекта Time::HiRes? |
Автор: zyxerr 22.12.2008, 19:07 |
может быть кто-то знает, с какой точностью работает Time::HiRes ? резульат выдало такой: 1.9073486328125e-006 насколько я понимаю, это 1.9 в степени -6 (т.е. 1.9 миллионных) |
Автор: ginnie 22.12.2008, 19:32 |
zyxerr, выдает с точностью системной функции gettimeofday(), а она у меня на FreeBSD с точностью до микросекунд. |
Автор: KSURi 22.12.2008, 19:54 |
ginnie, потому что сам по себе подсчет не является профилированием. Вроде это вытекает из моего предыдущего поста) Профилирование - совокупность действий, одним из которых является замер времени, и конечной целью которого, чаще всего, является повышение быстродействия программы. |