作業系統如何透過演算法處理 /etc/hosts?

作業系統如何透過演算法處理 /etc/hosts?

我有一個巨大的 /etc/hosts 文件,有 18,000 行。我用它來阻止廣告伺服器等。我的瀏覽效能似乎不錯,但我想知道是否有某個大小我會開始減慢自己的速度?作業系統在運作過程中如何儲存hosts檔案?我可以想到很多方法,從慢到快,我的先驗假設是它可以被有效地處理,因為它對網路來說是如此重要。以下是我能想到的從簡單到複雜的一些方法:

  • 每次需要時從文件中讀取。
  • 讀一次
    • 線性搜尋
    • 排序,然後二分查找
    • 使用特里樹
    • 使用哈希,但它如何最大限度地減少衝突

有很多看似合理的方法。實際用的是什麼?

看來這個問題一定已經在某個地方得到了解答,因此歡迎指向現有資源。我確實看過,但可能沒找對地方。

答案1

您應該告訴您正在使用的作業系統,但無論如何,提高Unix 和類別Unix 系統名稱解析效能的常用方法是使用守護程式(通常為nscd),它可以快取正向和負向解析並快速回應大多數請求。當 /etc/hosts 被修改時,至少在 Solaris 下,該快取將失效。

相關內容