Так, сначала Вы определяете идеальный цикл JavaScript, я полагаю, что он должен быть похожим на это:
ary.each (функция () {$arguments [0]) .remove ();})
Это может потребовать prototype.js библиотеки.
Затем, Вы получаете disgustet с аргументами [0] часть и имеете код быть произведенными автоматически из Вашей серверной инфраструктуры. Это работает, только если лестничная структура является Побережьем.
Теперь, Вам генерировали вышеупомянутое:
ary делают: [: каждый | каждый элемент удаляет].
Это прилагается завершение синтаксиса и переводит точно в вышеупомянутый JavaScript. И это заставит голову кружиться людей, которые не использовали интеграцию прототипа побережий прежде, поскольку они читают Ваш код. Это уверенный заставляет Вас чувствовать себя спокойными, также. Не говоря уже об усилении в гиковатости можно добраться здесь. Девочки любят его!
У вас есть (по крайней мере) два решения:
Довольно "наивное" решение - использовать микровремя (истинное) до и после части кода, чтобы получить сколько времени прошло при его исполнении; в других ответах говорилось об этом и уже приводились примеры, поэтому я больше не скажу.
Это хорошее решение, если вы хотите протестировать пару инструкций; например, сравнить два типа функций, например - лучше, если выполняется тысячи раз, чтобы убедиться, что любой "возмущающий элемент" усреднен.
Что-то вроде этого, поэтому, если вы хотите знать, сколько времени потребуется для сериализации массива:
$before = microtime(true);
for ($i=0 ; $i<100000 ; $i++) {
serialize($list);
}
$after = microtime(true);
echo ($after-$before)/$i . " sec/serialize\n";
Не идеально, но полезно, и это не занимает много времени на настройку.
Другое решение, которое отлично работает, если вы хотите определить, какая функция занимает много времени во всем скрипте, использовать:
Чтобы получить файлы профилирования, вам необходимо установить и настроить Xdebug; взгляните на страницу документации Профилирование PHP-скриптов .
Обычно я не включаю профилировщик по умолчанию (он генерирует довольно большие файлы и замедляет работу) , но используйте возможность отправки параметра с именем XDEBUG_PROFILE
в качестве данных GET, чтобы активировать профилирование только для нужной мне страницы.
Часть моего php.ini, связанная с профилированием, выглядит так:
xdebug.profiler_enable = 0 ; Profiling not activated by default
xdebug.profiler_enable_trigger = 1 ; Profiling activated when requested by the GET parameter
xdebug.profiler_output_dir = /tmp/ouput_directory
xdebug.profiler_output_name = files_names
(Дополнительную информацию см. В документации)
Этот снимок экрана взят из программы C ++ в KcacheGrind:
(источник: sourceforge.net )
Вы получите точно то же самое со скриптами PHP ;-)
(Я имею в виду, что с KCacheGrind; WinCacheGrind не так хорош, как KCacheGrind ...)
Это позволяет вам получить хорошее представление о том, что требует времени в вашем приложении - и иногда определенно помогает найти функция , которая все замедляет ^^
Обратите внимание, что Xdebug подсчитывает время процессора, затраченное PHP; когда PHP ожидает ответа от базы данных (например), он не работает; только ожидание. Так что Xdebug подумает, что запрос к БД не займет много времени!
Это должно быть профилировано на сервере SQL, а не на PHP, поэтому ...
Надеюсь, это будет полезно :-)
Удачи!
Для быстрой работы я делаю это (в PHP):
$startTime = microtime(true);
doTask(); // whatever you want to time
echo "Time: " . number_format(( microtime(true) - $startTime), 4) . " Seconds\n";
Вы также можете использовать профилировщик, например http://xdebug.org/ .
Если это что-то, что можно протестировать вне веб-контекста, я просто использую команду Unix time
.
В Zend Studio встроена поддержка профилирования с использованием XDebug или ZendDebugger. Он профилирует ваш код, сообщая вам, сколько времени заняла каждая функция. Это фантастический инструмент для определения ваших узких мест.
Вы можете использовать базовые вещи, такие как сохранение отметок времени или microtime () до и после операции, чтобы вычислить необходимое время. Это легко сделать, но не очень точно. Возможно, лучшим решением будет Xdebug , я никогда не работал с ним, но, похоже, это самый известный отладчик / профилировщик PHP, который я могу найти.
В последнее время я использую XHProf http://pecl.php.net/package/xhprof . Первоначально он был разработан Facebook и имеет приличный веб-интерфейс.