trofim
Новичок
Что бысрей: array_search или array_key_exists?
Встретилась задача. Не сам придумал
Пусть есть набор из 100 тысяч слов (словарь). Программа на PHP получает на вход некоторый текст и проверяет, содержится ли очередное слово текста в словаре или нет. Сравните две версии программы и выберите наиболее быструю, ответ объясните.
(a) /* чтение словаря в память, затраты на этот этап не оцениваются, $a – очередное слово из словаря */
(b) /* чтение словаря в память, затраты на этот этап не оцениваются, $a – очередное слово из словаря */
Поскольку имхо в PHP нет разницы между индексными и ассоциативными массивами, то мне кажется, что нет и никакой разницы в поиске ключа\значения. Т.е. первый и второй пример по скорости работы равнозначны.
Хоть я и не смог найти реализацию функций array_key_exists и array_search. Может там и есть какие-то принципиальные различия. Есть другие мнения?
Встретилась задача. Не сам придумал

Пусть есть набор из 100 тысяч слов (словарь). Программа на PHP получает на вход некоторый текст и проверяет, содержится ли очередное слово текста в словаре или нет. Сравните две версии программы и выберите наиболее быструю, ответ объясните.
(a) /* чтение словаря в память, затраты на этот этап не оцениваются, $a – очередное слово из словаря */
PHP:
...
$dictionary[] = $a;
...
/* основной цикл работы программы, $word – очередное слово текста */
while (...)
{
if (array_search($word, $dictionary) === false)
echo «Not found»;
else
echo «Found»;
}
PHP:
...
$dictionary[$a] = 1;
...
/* основной цикл работы программы, $word – очередное слово текста */
while (...)
{
if (!array_key_exists($word, $dictionary))
echo «Not found»;
else
echo «Found»;
}
Хоть я и не смог найти реализацию функций array_key_exists и array_search. Может там и есть какие-то принципиальные различия. Есть другие мнения?