4

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

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

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

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

4

2 回答 2

1

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

仍然尝试mmap提高性能。

于 2013-04-01T06:22:42.997 回答
0

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

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

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

if (stream != NULL)

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

于 2013-04-01T06:51:33.017 回答