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