|
|
|
| Есть необходимость выводить на главной станице. Много раз видел, но не понял как. Есть мысль что в начале ставить $time1=time(); и в конце $time2=time(); и вывести результат разницы. Так можно? Или есть внутренняя функция или другой метод | |
|
|
|
|
|
|
|
для: Artem S.
(18.08.2004 в 16:07)
| | Как правило, делается примерно так.
Используется функция microtime(), возвращающая строку вида "msec sec", где msec — составляющая в микросекундах, а sec — время в секундах, прошедшее с 1970 года.
Применение этой функции приведет примерно к такому результату:
0.48023600 1076713360
Такое представление не очень удобно для вычисления разницы во времени, поэтому его необходимо преобразовать в числовой вид. Иначе говоря, строку "msec sec" необходимо преобразовать к виду "sec.msec ". Сделать это можно так:
<?php
$part_time = explode(' ',microtime());
$real_time = $part_time[1].substr($part_time[0],1);
?>
|
Здесь при помощи функции explode строка, принимаемая во втором параметре, разбивается на подстроки по разделителю, передаваемому в первом параметре (в нашем случае это символ пробела). Результат возвращается в виде массива, элементы которого содержат подстроки разбиваемой строки.
Для получения разности между двумя числами, размещёнными в строке можно воспользоваться функцией bcsub. К примеру:
<?php
$diff_time = bcsub($stop_time, $start_time, 6);
?>
|
Функция принимает помимо двух строковых параметров ($stop_time, $start_time) так же число знаков после запятой необходимых в возвращаемом функцией результате.
Теперь можно для удобства сделать функцию gettime, в которую поместить вышенаписанный код:
<?php
function gettime()
{
$part_time = explode(' ',microtime());
$real_time = $part_time[1].substr($part_time[0],1);
return $real_time;
?>
|
Вот теперь все готово для вычисления времени выполнения какого-либо скрипта. Для примера посмотрим, во сколько раз преобразование типа в стиле C меньше, чем при помощи встроенной функции settype.
<?php
// подключаем функцию gettime
include "gettime.php";
$var = "5";
// профилируем преобразование типа с помощью функции settype
$start_time = gettime(); // начало
settype($var,integer);
$stop_time = gettime(); // окончание
$diff_time = bcsub($stop_time,$start_time,6); // вычисляем разницу
echo("преобразование типа функцией settype: ".$diff_time."<br>");
// профилируем преобразование типа в стиле С
$start_time = gettime();
$var = (int)$var;
$stop_time = gettime();
$diff_time = bcsub($stop_time,$start_time,6);
echo("преобразование типа в стиле с++: ".$diff_time."<br>");
?>
|
| |
|
|
|