我使用CreateFile()
和WriteFile()
將約100個大小爲50MB的文件依次寫入磁盤上的目錄。第二步,使用CreateFile()
和ReadFile()
來讀取這些文件的內容。爲什麼使用操作系統和磁盤緩衝區寫入文件後讀取操作要快得多?
我注意到一些局部奇怪的事情:
如果我通過FILE_FLAG_NO_BUFFERING | FILE_FLAG_WRITE_THROUGH
寫文件時,讀取需要noticably長的時間(通常幾百毫秒)。但是,當我不通過這些標誌(但使用FlushFileBuffers()
代替)時,寫入似乎以大致相同的速度發生,但在寫入文件後讀取這些文件的速度非常快(每個文件少於20毫秒!)。
這怎麼可能?在寫入5000MB數據後會如何影響讀取?磁盤是否緩存整個5GB?
這是否意味着RAM負載的增加,因爲5GB需要緩存在RAM中?在執行我的程序期間,我看不到有任何顯着的RAM變化。 –
你如何測量磁盤緩存使用了多少內存? –
我使用默認的Windows性能監視工具來測量RAM。如果5GB被緩存,我預計會看到一些差異。我剛剛編輯了我的問題,並補充說我在每次寫入後都使用'FlushFileBuffers()',並且我懷疑即使在使用FlushFileBuffers()後Windows仍然將這些文件保存在緩存中。 –