2013-04-11 3 views
3

У меня есть 814 652 файла XML в одной папке, имена файлов целые от 1 до 814,652.Загрузка файлов XML по пути

В моем приложении я загружаю некоторый XML-файл в datatable, но загрузка не мгновенная, некоторое время задержки до 3 секунд.

Это потому, что папка содержит слишком много файлов?

Если бы я мог разделить файлы на несколько папок, это ускорит работу?

просто я прочитал один раз в то время, на основе имени файла, который я получаю от выбранной строки в DataGrid

к сведению, что я не нужен перебрать список файлов, все что мне нужно это для загрузки указанного имени файла.

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

обновление: разделение файлов на подпапки и минимизация количества файлов в папке сделало его еще медленнее.

+0

как вы решаете, какие файлы загружать? – Yahya

+0

Вы читаете файлы по определенным именам или читаете все файлы в каталоге, а затем читаете их? – Shyju

+0

В зависимости от размера документа, 3 секунды звучит разумно для меня. Насколько велики эти файлы? – DGibbs

ответ

1

Предполагая, что у вас есть файловая система NTFS (FAT32 не вмещает 800k файлов в один каталог), this post предоставляет ответ на ваш вопрос, а также некоторые показатели и предложения. Нет, разделение на несколько каталогов может только повредить производительность.

На мой взгляд, было бы лучше объединить все файлы в один, а также отобразить его в память или использовать более удобное хранилище, специально предназначенное для быстрой индексации и доступа, например базы данных.

+0

, да, конечно, его NTFS, я думал, что деление файлов на подкаталоги ускорит работу, но стало еще хуже, мне интересно, почему – user1590636

+1

Вероятно, потому что NTFS загружает одиночный список каталогов в кеш, а затем приходится перезагружать кеш каждый раз, когда меняется каталог. – Alexander

0

Я закончил использование SQL-сервера, делящего файлы на таблицы, и используя EXI для сжатия XML.

Смежные вопросы