@maiskiykot
Free coder

Какой из вариантов перебора массива быстрее?

Скорее хотелось бы посоветоваться, чем я в затруднении. Есть база прокси, которую нужно перебрать (не совсем подходящий формат базы) и сравнить на повторение с существующей. Речь идет о сотнях тысяч записей. Столкнулся с тем, что скрипт отрабатывает это дело часами. Отсюда вопрос: как сделать перебор массива и преобразование строк максимально быстро? Нужно учесть, что база данных правильных прокси пополняется во время проверки новых данных и вариант с array_flip вообще не канает. Кто сталкивался с подобной задачей и как решали? А-то надоедает ждать.
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Два варианта:
1. Превращаем массив в тип графа: "дерево" и добавляем "ветки" (новые записи), если их там нет.
2. Делаем 2 списка уникальными (по-отдельности) и выполняем "merge" ("слияние") для этих списков (разные - добавятся, одинаковые - останутся неизменными).
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
SagePtr
@SagePtr
Еда - это святое
А чем не устраивает вариант воспользоваться любой СУБД, создать таблицу со столбцом, хранящим текстовую запись адреса прокси, уникальный индекс на этот столбец и фигачить туда с игнорированием ошибок вставки (INSERT IGNORE в MySQL, ON CONFLICT DO NOTHING в PostgreSQL)?
А потом просто сделать из этой таблицы выборку и получить уникальные значения. Уж СУБД с индексами, деревьями, хешами и прочими вещами умеют работать хорошо. В виде бонуса - вместе с адресом можно хранить и другую информацию, например, дату добавления, дату последней проверки и т.п.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы