我正在使用通過M.2連接的三星SSD的Windows 10 64位機器,6850K CPU和64 GB DDR4 RAM。我想要讀取一個大小約爲15 GB的文件到內存。我目前正在使用fstream通過對其讀取函數的單個調用來讀取整個文件中的無符號字符數組。但是,我獲得的速度並未達到SSD的最大讀取速度(SSD讀取速度爲3500 MB/s時爲1500 MB/s)。使用C++讀取大文件的SSD
所以我想知道是否有更快的方法?如果我爲較小的塊進行多個讀取調用,速度會更快嗎?如果是這樣,什麼是最佳塊大小?我看到一些人在之前提出的一些問題中提到了4K讀取。這在這種情況下適用嗎?
任何幫助表示讚賞。
我的代碼摘錄如下
我讀的代碼如下
fstream myFile;
myFile.open("file", ios::binary | ios::in);
myFile.read(reinterpret_cast<char*>(buf), 14929920000LL);
其中buf
是大小作爲讀取相同。
您可能會受到巴士速度的限制。例如,如果讀取速度適用於SATA3,則可能正在SATA2上運行。你檢查過了嗎? – Richard
另請參見:請張貼您用於閱讀的代碼。 – Richard
我讀的代碼如下 'fstream的MYFILE;'' myFile.open( 「文件」,IOS ::二進制| IOS ::中);'' myFile.read(reinterpret_cast的(BUF),14929920000LL) ;' 其中buf與讀取的大小相同。 –
TonyJ