Почему date () работает в два раза быстрее, если мы устанавливаем часовой пояс из кода?

Вы заметили, что функция date () работает в 2 раза быстрее , чем обычно, если вы устанавливаете фактический часовой пояс внутри своего скрипта перед любым вызовом date () ? Мне это очень любопытно.

Посмотрите на этот простой фрагмент кода:


Он просто вызывает функцию date () , используя цикл for 100 000 раз. У меня всегда получается около 1,6 секунды (Windows, PHP 5.3.5), но…

Если я снова установлю тот же часовой пояс, добавив одну абсурдную строку перед запуском:

date_default_timezone_set(date_default_timezone_get());

Я получу время ниже 800 мс ; ~ В 2 раза быстрее (тот же сервер).

Я искал какое-либо разумное объяснение этому поведению, но безуспешно. С моей точки зрения, эта дополнительная строка бесполезна, но PHP со мной не согласен.

Я пробовал этот тест на двух серверах Linux (разные версии PHP) и получил разные результаты, но в пропорции ~ 6: 1 .

Примечание: date.timezone свойство в php.ini было правильно настроено (Европа / Париж).

Я искал здесь связанные вопросы и не нашел ничего похожего. Я также проверил руководство для функции date_default_time_zone () @ php.net и обнаружил, что я не единственный, кто это заметил, но до сих пор не могу понять, почему это происходит?

Кто-нибудь?

32
задан ROMANIA_engineer 3 November 2017 в 21:22
поделиться