Есть ли какое-либо значение в PHP, проверяющее bool против int? - PullRequest
0 голосов
/ 24 января 2009

У меня есть следующая строка:

$this->magicQuotes = (bool) get_magic_quotes_gpc();

Я беру get_magic_quotes_gpc(), хранящий его в моем объекте, так как он используется много раз при генерации SQL Я также конвертирую это в bool.

Мне интересно, стоит ли конвертировать его в bool. Основная причина, по которой я выступаю, заключается в скорости, поскольку утверждение, которое проверяет:

if ($this->magicQuotes) { ... }

, что, я думаю, будет немного быстрее, если тест будет строго булевым значением.

Есть ли какая-то причина, по которой он не работает быстрее, или по каким-либо другим причинам не делать этого?

Ответы [ 2 ]

2 голосов
/ 24 января 2009

Если вы не конвертируете в bool, PHP все равно придется конвертировать в bool при оценке выражения в операторе if. Поэтому, независимо от того, конвертируете ли вы его явно или нет, он будет преобразован в bool в тот или иной момент, и я бы предпочел способ, позволяющий печатать меньше.

Кроме того, при такой крошечной оптимизации вам следует больше беспокоиться о том, что более читабельно, чем о том, что на 0,0 ... 01 секунду быстрее, чем другие.

1 голос
/ 24 января 2009

Это не должно быть быстрее ... в зависимости от того, как php преобразует и bool, и int в конце.

Как правило, на x86, как bool, так и int, в if(foo) это тест на ноль и скачок соответственно. Таким образом, актерский состав не должен улучшать производительность.

...