логическое — что быстрее в PHP: !! или (бул)?

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

<?php
$a='test';
$result1 = !!$a;
$result2 = (bool)$a;
?>

Я не беспокоюсь о размере кода, просто о времени выполнения.

некоторые тесты здесь, но они очень неубедительны (пробовали несколько раз), поэтому мне интересно, что происходит в исходном коде PHP, чтобы увидеть, обрабатываются ли они по-разному:

<?php
$a = 'test';
for($c=0;$c<3;$c++){
$start = microtime(true);
for($i=0;$i<10000000;$i++){
$result = !!$a;
}
$end =  microtime(true);
$delta = $end-$start;
echo '!!: '.$delta.'<br />';
}
$a = 'test';
for($c=0;$c<3;$c++){
$start = microtime(true);
for($i=0;$i<10000000;$i++){
$result = (bool)$a;
}
$end =  microtime(true);
$delta = $end-$start;
echo '(bool): '.$delta.'<br />';
}

результат

!!: 0.349671030045
!!: 0.362552021027
!!: 0.351779937744
(bool): 0.346690893173
(bool): 0.36114192009
(bool): 0.373970985413

-2

Решение

(bool)$a значит: взять $a и приведите его к логическому.

!!$a значит: взять $a, приведите его к логическому значению, если оно еще не было, затем возьмите полученное значение и переверните его, затем переверните снова.

Не только (bool) быстрее, чтобы выполнить (да, я проверил это; нет, вы не заметите никакой разницы, если у вас нет миллионов таких операций), но это намного быстрее для чтения. Если вам нужно привести тип, просто приведите тип; не используйте какой-нибудь «умный» хакерский подход, который, черт возьми, запутает любого, кто должен читать ваш код.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]