@or1gami

Многопоточность в PHP?

Привет!
Допустим есть 2 файла, один с ключами, а второй c ключами и значениями.
В файле с ключами ~150.000 строк, во втором ~100.000
В файле с ключами и значениями я выполняю поиск по ключу для каждого ключа (Сори за туфтологию)
В итоге у нас +- 15.000.000 итераций. Скрипт выполняется ну ооооочень долго, хочу этот процесс ускорить.
Начал копать в сторону pthreads, но хочу переспросить у более опытных людей как ускорить этот процесс
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 2
@rPman
Зачем на каждое значение из первого файла перечитывать второй?

Речь не о языке программирования, а о архитектуре приложения. Тебе нужен индекс, некий массив, лоучше в быстрой памяти (оперативной) который бы позволил за минимальное время 'константу' или хотя бы 'логарифм' найти запись во втором файле.

Обычный массив key-value (array в php) очень эффективно работает, в крайнем случае вместо значений можно хранить хеши (пракда проверить на случай коллизий все же рекомендуется), т.е. тебе достаточно загрузить в оперативную память второй массив, сохранив значения в ключах массива $index[$value]=0, и затем построчно загружать данные из первого файла и проверять isset($index[$value])

p.s. если же данные в оперативную память сохранять не вариант, используй базы данных, там готовые индексы, оптимизированные на работу с диском, самое простое, начни работать с sqlite
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Отсортировать оба списка ключей и выполнить поиск параллельным проходом по спискам.
Ответ написан
Ваш ответ на вопрос

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

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