Определения чисел с использованием математических вычислений в PHP - PullRequest
0 голосов
/ 07 декабря 2011

Я заметил, что многие разработчики используют математические операции в качестве значений переменных, например:

$time = 60 * 60 * 24 * 7; // 7 days

вместо простого присвоения вычисленного значения

$time = 604800;

Я знаю, что это делает код более простым для понимания, но не повлияет ли это на производительность? Как вы думаете, это хорошая практика?

Ответы [ 4 ]

3 голосов
/ 07 декабря 2011

В скомпилированном языке не будет никакого снижения производительности, поскольку вычисление будет выполнено во время компиляции. PHP обычно не компилируется, поэтому, возможно, небольшое снижение производительности. В большинстве случаев я бы предпочел более читаемый код более высокой производительности (если код не становится узким местом). Так что не беспокойтесь о производительности в этом случае.

Теперь, если мы сравним ваши примеры, тогда

$time = 60 * 60 * 24 * 7;

говорит само за себя, даже без комментариев. Если ты пишешь

$time = 604800;

тогда не очевидно, что представляет собой значение. Теперь вы можете добавить комментарий и написать

$time = 604800; // 7 days in seconds

но это плохо по двум причинам:

  1. вы дублируете информацию, что, возможно, не является большой проблемой само по себе, но
  2. если вы измените значение без изменения комментария, значит, в вашем коде есть вредный комментарий. Это гораздо более серьезная проблема, которая действительно вызвана дублированием информации.
3 голосов
/ 07 декабря 2011

Это может повлиять на производительность, но мы говорим о чем-то настолько незначительном, что об этом даже не стоит думать (вероятно, для 99,9% всех приложений PHP).

Я считаю хорошей практикой, потому что если вы хотите увеличить значение до 8 дней, вам не нужно пересчитывать все, и вы можете просто изменить 7 на 8 .

2 голосов
/ 07 декабря 2011

php - не тот язык, который беспокоится о последствиях такой микрооптимизации.Я предпочитаю удобочитаемость, если нет большого снижения производительности.Это редко.

1 голос
/ 07 декабря 2011

Я бы не стал беспокоиться о проблемах с производительностью. Это очень простая математическая задача, и преимущество знания того, что представляет число, намного перевешивает производительность этой чрезвычайно малой операции.

Тем не менее, если вы используете его в цикле, я сначала вычислю его

$time = 60 * 60 * 24 * 7; // 7 days

for ($i = 0; $i < 10000000; $i++)
{
    echo $time;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...