Кажется, что типичные сканеры просто загружают небольшое количество страниц или выполняют очень мало обработки, чтобы решить, какие страницы для загрузки ограничены IO.
Мне любопытно, какой порядок оценки величин соответствующих структур данных, количества хранимых страниц, требований к индексации и т. Д., Которые могут фактически сделать ЦП узким местом?
Например, приложение может рассчитать некоторые вероятности на основе ссылок, найденных на странице, чтобы решить, какую страницу сканировать дальше. Эта функция занимает O(noOfLinks)
и оценивается N
раз (на каждом шаге) ... где N
- это количество страниц, которые я хочу загрузить за один раунд сканирования. Я должен отсортировать и отслеживать эти вероятности и я должен следить за списком O(N)
, который в конечном итоге будет сброшен на диск и индекс поисковой системы. Разве не возможно (если предположить одну машину), что N
становится достаточно большим и что хранение страниц и манипулирование ссылками становится достаточно дорогим, чтобы конкурировать с ответом ввода-вывода?