PHP: strtotime против скорости mktime для получения 1 месяц назад - PullRequest
2 голосов
/ 16 января 2020

Что быстрее для чего-то простого, такого как получение времени от одного месяца go. Я могу сделать:

strtotime('-1 month');

или

mktime(1, 1, 1, date("n") - 1);

1 Ответ

0 голосов
/ 16 января 2020

Это было опробовано на Centos 6.10 с PHP 7.1 Запуск

<?php
set_time_limit(0);
function tester(callable $callback) {
  $times = [];
  for($j = 0; $j < 10; $j++) {
    $time = microtime(true);
    for($i = 0; $i < 100000; $i++) {
      $callback();
    }
    $newTime = microtime(true);
    $times[] = round($newTime - $time, 3).'<br>';
  }
  echo (array_sum($times) / count($times)).'<br>';
}
function stt() {
  strtotime('-1 month');
}
function mt() {
  mktime(1, 1, 1, date("n") - 1);
}
echo 'StrToTime<br>';
tester('stt');
echo 'mktime<br>';
tester('mt');

Результаты, которые я получаю:

StrToTime
1.4881
mktime
2.1647

Резюме: strtotime быстрее

...