2013-05-01 46 views
2

我目前正在嘗試搜索硬盤中的所有文件。什麼是搜索硬盤中所有文件的最快方法?

我上搜索窗口7.很多文件,這意味着使用大量文件I/O ...

我想我應該用多線程或異步I/O。

您認爲如何?

+4

完全取決於你要做什麼樣的搜索。你在尋找什麼?一般來說,CPU將比I/O更快,所以一個線程就足夠了,但這取決於你在尋找什麼_for_。 – 2013-05-01 16:51:26

+3

如果您的磁盤隨機訪問性能差,重要的是避免顛簸(來回尋找)。通常每個物理磁盤一個線程(不是分區!)是理想的。 – 2013-05-01 16:52:27

+2

每個磁盤一個*讀*線程 - 你可以有第二個線程進行實際搜索。 – RichieHindle 2013-05-01 16:52:54

回答

0

如果你正確地思考它,這可以很好地適用於工作流程:線程1使用目錄列表來檢索和提取目錄列表。線程2使用目錄列表並將其他目錄分派回線程1,同時將文件轉發到線程3.

線程3同時有一個簡單的工作:從文件一次獲取N頁數據並將它們轉發到線程4匹配的內存頁面。

因爲應用程序很大程度上會被IO綁定,所以您可以輕鬆地在線程3中投入一些CPU來優化請求嘗試的併發性和優先級,並確保您最大限度地提高新頁面的傳輸速度線程4以及整個過程完成的速度。

OTOH,您可能會發現僅切換到memory-mapped IO就會產生一個不太複雜的解決方案,並且速度足夠快。

相關問題