Я пытаюсь сравнить две функции, используя microtime()
.
Однако я получаю неожиданные результаты.
Согласно моему пониманию этого поста SO ( Отслеживаниевремя выполнения сценария в PHP ) Я должен иметь возможность вычесть $before
из $after
, чтобы получить время выполнения в секундах.
Я изложил свой сценарий так:
<?php
$int = 4;
$before = microtime(true);
print_r(filter_var($int, FILTER_VALIDATE_INT));
echo '<br />';
$after = microtime(true);
echo ($after - $before). 'sec' ."\n";
echo '<br />';
$int = 4;
$before = microtime(true);
print_r(is_int($int));
echo '<br />';
$after = microtime(true);
echo ($after - $before) .'sec' ."\n";
Я знаю, что это не точная итерация времени выполнения, поскольку она не зацикливает функцию X раз, чтобы получить среднее значение - сначала просто выполняется базовый тест, поэтому, пожалуйста, игнорируйте этот аспект.
Когда я захожу на эту страницу в своем браузере, я получаю следующие выходные данные:
4
9.0599060058594E-6сек
1
9.5367431640625E-7sec
Страница загружается менее чем за секунду - так почему 9.XYZ
вызывает у меня некоторое замешательство.
Правильно ли я использую microtime()
?Дополнительный вопрос: как узнать, какая функция самая быстрая?Принятый ответ в связанном вопросе вывел 0 мс для обеих функций.
edit
Я изменил свой скрипт на:
<?php
function checkInt($int)
{
return is_int($int);
}
function checkIntFilter($int)
{
return filter_var($int, FILTER_VALIDATE_INT);
}
$before = microtime(true);
for ($i = 1; $i < 1000; $i++)
{
checkInt(4);
}
$after = microtime(true);
echo ($after - $before). ' sec' .'<br />';
$before = microtime(true);
for ($i = 1; $i < 1000; $i++)
{
checkIntFilter(4);
}
$after = microtime(true);
echo ($after - $before). ' sec';
, который теперь выводит:
7.1048736572266E-5 сек0,00024008750915527 сек
однако моя страница определенно загружена менее чем за 7 секунд - второй результат выглядит правильно, но я не уверен насчет первого ...