2014-01-22 50 views
2

我們有一個java進程,對文件進行一些分析,然後將這些文件寫入目錄。最近我們注意到這個過程急劇減速。罪魁禍首是輸出目錄已超過100萬個文件。當我們清空目錄時,這個過程的速度顯着加快。爲什麼會這樣呢?這是一臺Windows Server 2012機器。沒有對目錄中的文件進行處理(除了在處理完成後寫入目錄)。大目錄處理速度慢

+0

目錄上的操作系統是什麼?你做任何目錄的處理/列表? – MadProgrammer

+1

嗯,我會建議30,000作爲一個Windows盒上的文件的絕對上限...也許創建256個子目錄00​​,01,02,03 ... fd,fe,ff和傳播你的文件有點:-( –

+2

創建行爲必須經過所有百萬個條目才能確保唯一性並且支持該目錄的數據結構未針對O(1)訪問進行優化 –

回答

1

您將需要使用新的數據結構,將文件分類到子目錄,或使用更快的硬件(查看SSD)。目前,我相信發生的事情是,在編寫新文件時,您正在檢查所有其他文件。