在運行期間,我經常需要讀取較大文件(300 MB)的小部分。 目前,我總是打開的文件,從中讀取,然後再次關閉它這樣的:C++從大文件快速讀取的最佳方式
FILE *file =fopen(szFileName,"rb");
if (file)
{
fseek(file,iFirstByteToRead, SEEK_SET);
fread(nEncodedBytes,sizeof(unsigned char), iLenCompressedBytes, file);
fclose(file);
}
但那是太慢了,因爲我做的如此頻繁。 另外我不確定fread是否可以加速。
請問這種情況的最佳做法是什麼?
你不能做太多的事情。原因在於,與存儲器訪問相比,在大文件中查找位置和從磁盤讀取數據是非常緩慢的操作。該文件太大 - 最佳值爲64/128 Mb(正如Google在他們的數據庫中所證明的那樣)。而且,如果你經常這樣做,你很可能會很快損壞磁盤。 – SChepurin
這不是C++,雖然 – blue