簡體   English   中英

glob(使用唯一前綴)比readdir快嗎?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM