[英]Is glob (using a unique prefix) faster than readdir?
有一個包含許多文件的目錄,我需要打開名為00343dde41bac11ef7020935ee3d*
的文件。 我懷疑只有一個這樣的文件。
我知道訪問一個文件fopen (3)
比讀取整個目錄readdir (3)
更快。
是否可以假設使用glob (3)
會比僅使用readdir (3)
和測試文件名快得多(需要更少的磁盤訪問)? 還有一個更強的聲明:我可以假設在這種情況下,只有一個文件匹配並且我的模式使用前綴的glob (3)
應該和fstat (3)
一樣快嗎?
研究:
在* NIX系統上,只有一個內核接口可以訪問目錄內容: readdir()
。 在內核級別,* NIX系統不支持任何形式的glob或模式,甚至不支持前綴匹配。 僅支持目錄內容的啞線性列表。
glob()
(或類似的wordexp()
)是一個庫函數,使用readdir()
庫函數實現。 最重要的是,它還必須使用glob表達式執行匹配。 它不能比手工編碼的readdir()
循環快。
PS在文件系統級別上處於較低級別:通常不對磁盤上的目錄條目進行排序。 因此無法優化部分文件名查找。 (此外,大多數文件系統都忽略了用於編碼文件名的字符集。)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.