|
0 Всего найдено: 3
Spacewalker
Сообщение
15/08/2009 05:28
Копия темы
Проверка скорости приложения php. Понадобилось мерять скорость. Вдруг еще кому пригодится? Гуру могут не смотреть: ничего интересного для них не будет :) 1. Инициализируем. 2. Ставим точки. 3. Выводим на экран. 1. Инициализируем. ------------------------ if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') { DEFINE ("TIMEMACHINE", TRUE); } else { DEFINE ("TIMEMACHINE", FALSE); } 2. Ставим точки. ---------------------- if (TIMEMACHINE) $timemachine[] = array ('name' => 'Старт работы скрипта', 'point' => microtime()); (любой код) if (TIMEMACHINE) $timemachine[] = array ('name' => 'Модули подключены'', 'point' => microtime()); 3. Выводим на экран. --------------------------- if (TIMEMACHINE) { if (count($timemachine)) { echo "<table border='1'>"; $p = 0; for ($i=0; $i<count($timemachine); $i++) { $t0 = explode (" ", $timemachine[$p]['point']); $t0 = $t0[1] + $t0[0]; $t1 = explode (" ", $timemachine[$i]['point']); $t1 = $t1[1] + $t1[0]; $t2 = $t1 $t0; echo "<tr><td>".$timemachine[$i]['name']."</td><td>" ;; $i>0? printf("%f секунд",$t2) : '---'; echo "</td></tr>\n"; $p = $i; } $t0 = explode (" ", $timemachine[0]['point']); $t0 = $t0[1] + $t0[0]; $t1 = explode (" ", $timemachine[$p]['point']); $t1 = $t1[1] + $t1[0]; $t2 = $t1 $t0; echo "<tr><td style='background-color:#cccccc; font-weight: bold;'>Всего времени: </td><td>"; printf("%f секунд",$t2); echo "</td></tr>\n"; echo "</table>"; } else { echo "Данные не были собраны."; } } В итоге получаем таблицу, в которой получаем разницу времени между двумя точками. Никаких операций по вычислениям во время работы скрипта не происходит, всё считается в конце главного скрипта. В массив (см. пункт №2) собираются значения времени. Чтобы поставить новую точку, достаточно просто скопировать строку и поменять заголовок. "Установка": 1. Инициализируем код в самом начале. 2. Строки для точек ставим где угодно (если вызов из функции, не забудьте сделать объявление global $timemachine внутри функции). 3. В самом конце размещаем вывод данных. Скрин прикреплён.
BossIT
Сообщение
15/08/2009 07:34
Копия темы
Профилирование кода вещь нужная при разработке :) Но лучше count($timemachine) выносить до цикла в отдельную переменную, т.к. в вашем варианте количество будет пересчитываться каждый раз в цикле.
Spacewalker
Сообщение
15/08/2009 07:38
Копия темы
0
Некритично для данного участка кода, но заметка, конечно, верная. Старая привычка все никак не избавлюсь от нее :) |
Выразить восторг, поругаться или предложить что-нибудь можно на форуме |
Для обсуждения этого сервиса так же есть темы на фрилансе по поиску , флудотопу ,и по удалённым сообщениям ,и по Актуальным/популярным темам , и по топу "кто кому больше наотвечал" |