Язык веб-программирования для очень больших списков?
По вашему опыту, какой лучший язык веб-программирования используется для сортировки и сравнения очень больших списков (т.Е. десятков тысяч адресов электронной почты)?
Я лучше всего знаком с PHP. Я думаю, что это могло бы выполнить работу, но я не уверен в других языках и в том, может ли быть претендент на пари.
Спасибо!
6 answers
Я бы хранил электронные письма в базе данных и использовал SQL для выполнения сортировки и поиска. Именно для этого и были созданы базы данных, и у них будут интеллектуальные решения, которые превзойдут все, что большинство людей могли бы написать в коде.
Можно ли выполнить сортировку внутри базы данных? Они предназначены для динамической сортировки и сравнения. Я бы посоветовал вам перейти к модели, которая позволяет БД обрабатывать такого рода действия.
Если вы действительно по какой-то причине не можете использовать БД, вам следует сосредоточиться на алгоритмах, а не на языках. Выберите язык на основе других критериев (личное знакомство, поддерживает ли он другие ваши задачи, есть ли у него активное сообщество поддержки и т. Д. и т. Д.) И определите лучший алгоритм, учитывая причуды этого языка. Например, согласно некоторым обсуждениям в https://stackoverflow.com/questions/309300/defend-php-convince-me-it-isnt-horrible , PHP имеет относительно низкую производительность рекурсии.
Но серьезно, используйте для этого базу данных.
Это не зависит от языка программирования, это зависит от логики, скажем, будь то индексы или схемы таблиц и механизм кэширования.
Язык обычно не имеет большого значения СЛИШКОМ. Выберите тот, с которым вам больше всего комфортно.
Конечный продукт формируется разработчиком, а не инструментами.
Вы также можете использовать trie, который представляет собой структуру данных префиксного дерева - для сортировки в памяти.
Адреса электронной почты имеют ограничительный набор символов (a-z
, 0-9
, _
, .
и т.д.), поэтому в триеноде будут только эти символы. Этот учебник по topcoder по trie является хорошей отправной точкой, если вы еще не знаете о trie.
Вам нужно пройти через все строки, чтобы построить три.
Поиск/сравнение занимает O(l) времени, где l - длина строка, которую вы сравниваете.
Сортировка требует, чтобы вы пересекли все триноды дерева trie, используя DFS (поиск по глубине) - O(|V|+ |E|) время.
Самым быстрым будет скомпилированный cgi.