
Eu tenho um enorme arquivo /etc/hosts com 18.000 linhas. Eu o uso para bloquear servidores de anúncios e coisas assim. Meu desempenho de navegação parece bom, mas me pergunto se há algum tamanho em que começarei a desacelerar? Como os sistemas operacionais armazenam o arquivo hosts durante a operação? Posso pensar em várias maneiras, de lenta a rápida, e minha suposição a priori é que isso seja tratado de forma eficiente, pois é fundamental para a rede. Aqui estão algumas maneiras que posso pensar, do simples ao mais complexo:
- Leia o arquivo sempre que necessário.
- Leia uma vez
- pesquisa linear
- classificar e depois pesquisar binária
- use uma tentativa
- use um hash, mas como ele minimiza colisões
Há muitas maneiras que parecem razoáveis. O que é realmente usado?
Parece que esta pergunta deve ter sido respondida em algum lugar, portanto, sugestões para um recurso existente são bem-vindas. Eu olhei, mas talvez não no lugar certo.
Responder1
Você deve informar qual sistema operacional está usando, mas de qualquer maneira, um método usual para melhorar o desempenho da resolução de nomes com Unix e sistemas semelhantes ao Unix é usar um daemon (geralmente nscd) que armazena em cache resoluções positivas e negativas e responde rapidamente à maioria das solicitações. Quando /etc/hosts é modificado, pelo menos no Solaris, esse cache é invalidado.