Как стать автором
Обновить
-2
0

Фрилансер на PHP/Python/JS

Отправить сообщение

PHP: array_key_exists ищет быстрее чем in_array в 500 раз

Время на прочтение3 мин
Количество просмотров14K
В 2014 уже писали про обыск массива, но вряд ли кто понял.

C тех пор вышло много версий PHP и не исправили значит обратная связь плохая и об этом мало кто знает. На питоне так же, и в 3* хуже чем в 2.7.

Иногда нужно найти строку в массиве строк — очень частая операция в разных алгоритмах и если массив небольшой и искать немного и не в цикле, то in_array нормально, на общую скорость не влияет, но если big data и искать надо массиве из миллиарда строк и миллиард раз, то это уже критично: лучше час вместо недели.

Простой тест показывает:

in_array ищет за 6-9 сек ideone.com/Yb1mDa 6600ms
а array_key_exists ищет тоже самое, но быстрее в 250(php5.6/py3.*) в 400+ раз (php7.3/py2.7) ideone.com/gwSmFc (цикл увеличен в 100 раз) 12ms (6600/12=550раз +-10% разброс из-за нагрузки и кеша)

Почему же такое происходит? Рассмотрим подробно:
Читать дальше →
Всего голосов 40: ↑14 и ↓26-8
Комментарии50

Информация

В рейтинге
Не участвует
Откуда
Россия
Зарегистрирован
Активность