[問題] linux下掃瞄系統檔案的方式與效能

看板C_and_CPP (C/C++)作者時間13年前 (2012/08/01 01:04), 編輯推噓1(1011)
留言12則, 6人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux, gcc, uclib in embedded 問題(Question): 我的程式有個功能,需要在特定目錄下掃瞄該目錄下所有資料夾與檔案,將其存成cache 目錄深度與廣度不定,檔案數量約20~40K個。 目前試過用scandir或是ftw去走完整個檔案樹,兩者效能差不多不過在目標板上 需要花上長達5~10分鐘。 目前想要針對這段功能去提升效能,有幾個方向,不過感覺都沒辦法有效提升。 1.將其功能實做在kernel space,減少system call中user space與kernel space交換 資料的時間。 這個方向應該是可以確定提升部份效能,但是提升幅度可能極其有限。 2.直接針對檔案系統格式下手,fat去讀它的檔案總表(似乎是檔案配置表?)取得檔案路徑 與名稱。 這方向,以FAT來說似乎可以大幅提升速率,但不確定是否可行,還在研究時作方法階段 ,且這方向需要針對不同檔案系統做,ntfs部分又似乎無法用這個方式。 不知道板上有沒有人有類似經驗可以分享,謝謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 42.75.252.247

08/01 01:06, , 1F
存成cache之後要怎麼使用這個東西呢?
08/01 01:06, 1F

08/01 01:14, , 2F
主要是要針對這群檔案中找到要的檔案類型,然後下次可以
08/01 01:14, 2F

08/01 01:14, , 3F
直接使用
08/01 01:14, 3F

08/01 01:20, , 4F
演算法dfs,parsing整棵樹這部分應該很難加快。
08/01 01:20, 4F

08/01 01:23, , 5F
檔案是只要掃檔名還是連內容都要掃?
08/01 01:23, 5F

08/01 01:24, , 6F
只掃檔名的話要這麼久還真是有點意外...
08/01 01:24, 6F

08/01 01:25, , 7F
只掃檔名,會慢是因為在嵌入平台上,受限CPU與flash速度
08/01 01:25, 7F

08/01 01:26, , 8F
...原來是20~40k個,剛剛以為是20~40個 (真是眼殘了)
08/01 01:26, 8F

08/01 01:28, , 9F
NTFS可以只掃MFT,有套叫EVERYTHING的軟體就是做這件事
08/01 01:28, 9F

08/01 01:31, , 10F
剛稍微查了一下MFT 似乎是個方向 明天再查查看 感謝樓上
08/01 01:31, 10F

08/01 01:56, , 11F
換一套檔案系統又要重搞一次,吃力不討好的程式
08/01 01:56, 11F

08/03 13:30, , 12F
感覺你這個功能應該要針對檔案系統特系才能加快
08/03 13:30, 12F
文章代碼(AID): #1G610dUg (C_and_CPP)
文章代碼(AID): #1G610dUg (C_and_CPP)