C ++快速读取较大文件的最佳方法

时间:2013-04-01 06:20:05

标签: c++

在运行期间,我经常需要读取较大部分的较大文件(300 mb)。 目前我总是打开文件,从中读取然后再次关闭它:

FILE *file =fopen(szFileName,"rb");
if (file)
{
    fseek( file,iFirstByteToRead, SEEK_SET);
    fread(nEncodedBytes,sizeof(unsigned char), iLenCompressedBytes, file);
    fclose(file);
}

但这太慢了,因为我经常这样做。 我也不确定fread是否可以加速。

请问这种情况的最佳做法是什么?

2 个答案:

答案 0 :(得分:1)

保持文件打开,你会做得更好。

尝试使用mmap以提高性能。

答案 1 :(得分:0)

与文件控制相关的工作总是会导致昂贵的成本。如果您控制多次以管理文件,则不必关闭文件指针。

如下所示,一旦获得文件指针,

FILE *stream = fopen(stream, “rb”);

if (stream != NULL)

您必须在程序结束后关闭流文件指针,并且如果您必须管理多个文件,您将使用一个专用作文件读取的线程。