我的問題是應用程序花費太長時間才能加載數千個文件。是的,我知道這需要很長時間,但我希望能夠在任何時間內加快速度。我的意思是「加載」是打開文件來獲取它的描述符,然後讀取它的前100個字節左右。如何快速打開並讀取1000個文件
所以,我的主要策略是創建第二個線程,打開和關閉所有文件(不讀取任何內容)。這似乎有幫助,因爲線程在主線程之前運行,我猜操作系統提前緩存這些文件描述符,以便當我的主線程打開它們時,它是快速打開的。這實際上有所幫助,因爲線程可以開始緩存這些文件描述符,而我的主線程正在解析從這些文件讀入的數據。
所以我真正的問題是......我還能做些什麼來提高速度?有什麼方法?有沒有人有過這樣的成功?
我聽說過OS預取調用,但它是虛擬內存頁面。有沒有辦法告訴操作系統,嘿,我將很快需要所有這些文件 - 我建議你提前爲我收集它們。我的lookahead線程非常粗糙。
我可以使用低級磁盤技術嗎?有沒有可能有助於文件訪問的模式?現在,加載的文件都來自同一個文件夾。我想沒有辦法確定磁盤上的確切位置,以及打開文件的順序對於磁盤來說是最快的。我也猜測這個磁盤有一些硬件可以使這個儘可能高效。
我的應用主要是針對windows,但是unix的建議也會有幫助。
我用C++進行編程,如果這有所作爲。
感謝, -julian