(這不是我的計劃,但我會盡力提供所有相關資料給我所知)。文件讀取第一讀取慢,但很快就連續讀
有一個程序它讀取大小約爲300MB的二進制文件,處理它們並輸出一些信息。該程序使用ifstream進行文件輸入,並且每次讀取都正確初始化並關閉流。
程序必須多次讀取每個文件。第一次讀取文件大約需要3秒,每次連續讀取大約需要0.1秒。如果處理了多個文件,返回到第一個文件仍然會產生較快的讀取速度,但是在一段時間後重新讀取文件變得緩慢。
此外,如果一個文件被複制到另一位置,該新文件的第一讀取的速度大致是0.1秒。
如果你做數學題,連續讀取速度大約是硬盤驅動器的通告讀取速度。
這一切看起來像文件位置由兩種操作系統或硬盤的緩存,這樣在連續讀取你不必去尋找文件的位置。
有誰知道到底是什麼原因造成初始讀取速度下降,並且是否可以預防?三秒可能看起來不是很多,但它們會使正確處理每個文件所需的總時間增加大約5個小時。
此外,該程序運行在Fedora 14和Scientific Linux上,兩個操作系統都有其默認文件系統。
任何想法,將不勝感激。
讀取300MB文件的3秒鐘大概是正確點擊磁盤 - 這是100MB/s,這是速度的高端,您可以從現代快速硬盤。讀取300MB文件的0.1秒不會從磁盤上脫落 - 這是從緩存中提取出來的。 – caf