Как ОС алгоритмически обрабатывает /etc/hosts?

Как ОС алгоритмически обрабатывает /etc/hosts?

У меня есть огромный файл /etc/hosts с 18 000 строк. Я использую его для блокировки рекламных серверов и т. п. Производительность моего браузера, кажется, в порядке, но мне интересно, есть ли какой-то размер, при котором я начну замедляться? Как ОС хранят файл hosts во время работы? Я могу придумать множество способов, от медленных до быстрых, и мое априорное предположение заключается в том, что он обрабатывается эффективно, поскольку он так важен для работы сети. Вот несколько способов, которые я могу придумать, от простых до более сложных:

  • Читать из файла каждый раз, когда это необходимо.
  • Прочитать один раз
    • линейный поиск
    • сортировка, затем бинарный поиск
    • использовать трай
    • используйте хеш, но как он минимизирует коллизии

Есть много способов, которые кажутся разумными. Что на самом деле используется?

Кажется, на этот вопрос где-то уже был дан ответ, поэтому ссылки на существующий ресурс приветствуются. Я смотрел, но, возможно, не в том месте.

решение1

Вам следует указать, какую ОС вы используете, но в любом случае обычным методом улучшения производительности разрешения имен в Unix и Unix-подобных системах является использование демона (обычно nscd), который кэширует положительные и отрицательные разрешения и быстро отвечает на большинство запросов. При изменении /etc/hosts, по крайней мере в Solaris, этот кэш становится недействительным.

Связанный контент