2013-04-11 105 views
3

我在一個文件夾上有814,652個XML文件,這些文件的名稱是從1到814,652的整數。通過路徑加載XML文件

在我的應用程序中,我將一些xml文件加載到數據表中,但加載不是即時的,有的時間延遲達3秒。

是否因爲該文件夾包含太多文件?

如果我可以將文件分成多個文件夾,這會加快速度嗎?

只是我根據我從選定的行獲得一個DataGrid

請注意,我不是通過文件列表需要循環的文件名一次讀一個單一的時間,我需要的是加載指定的文件名。

int filename = ;//get the value from the focused row in the datagrid 
mydatatable.ReadXml(path + @"\xmlfiles\" + filename + ".xml"); 

更新:將文件分爲子文件夾和最小化每個文件夾的文件數量使其更慢。

+0

你如何決定上傳哪些文件? – Yahya 2013-04-11 14:24:06

+0

你是通過特定名稱讀取文件還是讀取目錄中的所有文件,然後讀取每個文件? – Shyju 2013-04-11 14:24:11

+0

根據文檔的大小,3秒對我來說聽起來很合理。這些文件有多大? – DGibbs 2013-04-11 14:24:28

回答

1

假設您有NTFS文件系統(FAT32不會在一個目錄中保存800k個文件),this post爲您的問題提供了答案以及一些指標和建議。不,分成幾個目錄只會傷害性能。

在我看來,將所有文件合併爲一個文件並將其映射到內存或使用更加方便的存儲(專爲快速索引和訪問而設計)(如數據庫)會更好。

+0

是肯定它的NTFS,我認爲將文件分爲子目錄會加快速度,但它變得更糟,我想知道爲什麼 – user1590636 2013-04-11 19:57:44

+1

可能是因爲NTFS加載單目錄列表進入緩存,然後每次更改目錄時都必須重新加載緩存。 – Alexander 2013-04-11 20:09:11

0

我結束了使用sql服務器將文件分割成表和使用EXI壓縮XML。