Правильное использование микротайма

Я пытаюсь сравнить две функции, используя microtime(),

Однако я получаю неожиданные результаты.

Согласно моему пониманию этого поста ТАК (Отслеживание времени выполнения скрипта в 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-6sec

1

9.5367431640625E-7sec

Страница загружается менее чем за секунду — так почему 9.XYZ появляется меня немного смущает.

Я использую microtime() правильно? Дополнительный вопрос: как узнать, какая функция самая быстрая? Принятый ответ в связанном вопросе вывел 0 мс для обеих функций.

редактировать

Я изменил свой скрипт на это:

<?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 секунд — второй результат выглядит правильно, но я не уверен насчет первого …

0

Решение

Вы не правильно читаете результаты. Это «научная нотация«, который используется для выражения значений, которые либо слишком малы, либо слишком велики для удобной обработки.

7.1048736572266E-5 секунды эквивалентны 0.000071048736572266 секунд.

Таким образом, вы правы, ваш тест занимает значительно меньше времени, чем 7 секунд.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]