我有一个巨大的 /etc/hosts 文件,有 18,000 行。我用它来阻止广告服务器等。我的浏览性能似乎很好,但我想知道是否有某个大小会开始减慢我的速度?操作系统在操作过程中如何存储主机文件?我能想到很多方法,从慢到快,我的先验假设是它处理得非常有效,因为它对网络如此重要。以下是我能想到的一些从简单到更复杂的方法:
- 每次需要时从文件读取。
- 阅读一次
- 线性搜索
- 排序然后二分查找
- 使用 trie
- 使用哈希,但它如何最大限度地减少冲突
很多方法看上去都很合理,但实际用的是哪种呢?
似乎这个问题一定在某个地方得到了解答,所以欢迎指出现有资源。我确实看过了,但可能不是在正确的地方。
答案1
您应该说明您使用的是什么操作系统,但无论如何,提高 Unix 和类 Unix 系统的名称解析性能的常用方法是使用守护进程(通常是 nscd),该守护进程缓存正向和反向解析并快速响应大多数请求。当 /etc/hosts 被修改时,至少在 Solaris 下,此缓存将失效。