Driver86
@Driver86
Немодератор toster.ru

Почему array_key_exists значительно медленнее, чем isset?

Почему array_key_exists значительно медленнее, чем isset? Ведь первая просто проверяет наличие ключа в массиве, а вторая должна: проверить существование переменной, проверить возможность наличия ключа, проверить наличие ключа, проверить его на null.
<?php 

$a = array('a'=>1,'b'=>2,'c'=>3,'d'=>4, 'e'=>null); 

$s = microtime(true); 
for($i=0; $i<=100000; $i++) { 
     $t= array_key_exists('a', $a); //true 
     $t= array_key_exists('f', $a); //false
     $t= array_key_exists('e', $a); //true 
} 

$e = microtime(true); 
echo 'array_key_exists : ', ($e-$s);

echo "\r\n";

$s = microtime(true); 
for($i=0; $i<=100000; $i++) { 
     $t = isset($a['a']); //true 
     $t = isset($a['f']); //false
     $t = isset($a['e']); //false 
} 

$e = microtime(true); 
echo 'is_set : ' , ($e-$s);

Тестировал в песочнице - sandbox.onlinephpfunctions.com/code/20269eaf965113... - итого:
array_key_exists : 0.013365030288696
is_set : 0.0059390068054199
  • Вопрос задан
  • 533 просмотра
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
isset - конструкция языка
array_key_exists - функция
Очень разные накладные расходы на вызов функции и отсутствие вызова функции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@shagguboy
опкоды сдампи и посмотри
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы