Вероятно, было бы намного быстрее, если бы у вас был один большой файл вместо множества маленьких. Как правило, это более эффективно. Кроме того, вы можете получить ускорение от простого сохранения массива numpy
и загрузки этого файла .npy
вместо чтения в большом текстовом файле. Я не так уверен насчет последней части, хотя. Как всегда, когда время вызывает беспокойство, я бы попробовал оба этих варианта, а затем измерил улучшение производительности.
Если по какой-то причине вы не можете просто иметь один большой текстовый файл / файл .npy
, вы также можете получить ускорение, используя, например, multiprocessing
, чтобы несколько рабочих читали файлы одновременно время. Затем вы можете просто объединить матрицы в конце.
Не ваш основной вопрос, но так как это кажется проблемой - вы можете переписать текстовые файлы, чтобы не было лишних символов новой строки, но я не думаю, что np.loadtxt
может их игнорировать. Если вы готовы использовать pandas
, то pandas.read_csv
с skip_blank_lines=True
должны справиться с этим за вас. Чтобы получить numpy.ndarray
из pandas.DataFrame
, просто сделайте dataframe.values
.
Эта статья - о том, как flickr делает автозаполнение очень хорошим чтением. У меня было несколько впечатлений «вау», читая его.
«Этот виджет загружает список всех из ваших контактов, в JavaScript, в до 200 мс (это верно даже для участники с 10 000+ контактов). В Для того, чтобы получить этот уровень производительность, мы должны были полностью переосмыслить способ отправки данных с сервер клиенту. "
1,5-секундные интервалы являются очень большими промежутками для обслуживания автозаполнения.
Реальная проблема скорости в этом случае, я считаю, это время, которое требуется для выполнения запроса к базе данных. Если нет способа повысить скорость вашего запроса, то, возможно, расширив свой поиск, включив в него больше элементов с результатами с высоким рейтингом, вы можете выполнить один поиск для каждого другого символа и отфильтровать 20-30 результатов на стороне клиента.
Это может улучшить внешний вид производительности, но через 1,5 секунды я сначала попытаюсь улучшить скорость запроса.
Кроме этого, если вы можете дать нам больше информации, я могу дать вам больше конкретный ответ.
Удачи!
Before doing some optimizations you should first analyze where the bottle-neck is. Try to find out how long each step (input → request → db query → response → display) takes. Maybe the CakePHP implementation has a delay not to send a request for every character entered.
Серверная часть PHP / SQL работает медленно.
Не используйте PHP / SQL. Мой автозаполнение написано на C ++ и использует хэш-таблицы для поиска. См. Производительность здесь .
Это компьютер Celeron-300, FreeBSD, Apache / FastCGI.
И, как видите, быстро работает с огромными словарями. 10 000 000 записей - не проблема.
Также поддерживает приоритеты, динамический перевод и другие функции.