[英]C++ Best way to quickly read from larger file
在運行期間,我經常需要讀取較大文件的一小部分(300 mb)。 目前我總是打開文件,從中讀取然后再次關閉它:
FILE *file =fopen(szFileName,"rb");
if (file)
{
fseek( file,iFirstByteToRead, SEEK_SET);
fread(nEncodedBytes,sizeof(unsigned char), iLenCompressedBytes, file);
fclose(file);
}
但這太慢了,因為我經常這樣做。 另外我不確定fread是否可以加速。
請問這種情況的最佳做法是什么?
保持文件打開,你會做得更好。
嘗試使用mmap
來提高性能。
與文件控制相關的工作總是會導致昂貴的成本。 如果您多次控制以管理文件,則不必關閉文件指針。
如下所示,一旦你得到文件指針,
FILE *stream = fopen(stream, “rb”);
if (stream != NULL)
您必須在程序結束后關閉流文件指針,並且如果您必須管理許多文件,您將使用專用作文件讀取的線程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.