Час виконання функції в PHP або тест швидкості запитів в БД
- Олександр Мойсеюк
- PHP
- Переглядів: 607
-
Щоб визначити час виконання функції потрібно викликати перед початком виконання і після початку функцію microtime(true)
Фінально це може виглядати так:
$start = microtime(true); // тут виклик ваших функцій, або запитів до БД echo 'Час виконання: '.(microtime(true) - $start).' сек.';
Я зазвичай відразу роблю 2 подібних записи і запускаю одночасно 2 варіанти різних функцій, які потрібно протестувати.
До другого ще зручно додати кілька перенесень рядка:
$start = microtime(true); // ще одна частина коду для тесту echo '<br><br>Час виконання: '.(microtime(true) - $start).' сек.';
Результатом буде час виконання з великою кількістю знаків після коми:
Час виконання: 0.35300993919373 сек. Час виконання: 0.30709195137024 сек.
В моєму випадку другий варіант виявився значно швидшим, що підтвердило моє першочергове припущення.
Для того щоб перевірити функції, які виконуються супер-швидко, зазвичай використовують цикли з великим числом ітерацій. Тобто функцію запускають 1000 - 10 000 разів. В такому разі різниця буде більш помітною.
$start = microtime(true); for ($i=0; $i < 1000; $i++) { // дуже коротку подію повторюємо значну кількість раз, записуючи її тут } echo 'Час виконання: '.(microtime(true) - $start).' сек.';
Цікаві спостереження
Все відносно, але в більшості випадків зробити 2 запити в одну таблицю в БД трохи швидше ніж зробити 2 аналогічні запити в 2 різних таблиці. Навіть якщо в них однаковий вміст.
Якщо при цьому зробити 1 запит в 1 таблицю, а потім за допомогою PHP перебрати 20 отриманих значень і розділити їх на 2 частини по якомусь параметру. То це виявилося ВДВІЧІ швидше за 2 запити.Принаймні для мого випадку було саме так.
Це мене вразило, не зважаючи на те, що я саме такого результату і очікував
Пишіть коментарях ваші результати і спостереження. Буде дуже цікаво зібрати колекцію подібних висновків. Творчих злетів!