在运行期间,我经常需要读取较大部分的较大文件(300 mb)。 目前我总是打开文件,从中读取然后再次关闭它:
FILE *file =fopen(szFileName,"rb");
if (file)
{
fseek( file,iFirstByteToRead, SEEK_SET);
fread(nEncodedBytes,sizeof(unsigned char), iLenCompressedBytes, file);
fclose(file);
}
但这太慢了,因为我经常这样做。 我也不确定fread是否可以加速。
请问这种情况的最佳做法是什么?
答案 0 :(得分:1)
保持文件打开,你会做得更好。
尝试使用mmap
以提高性能。
答案 1 :(得分:0)
与文件控制相关的工作总是会导致昂贵的成本。如果您控制多次以管理文件,则不必关闭文件指针。
如下所示,一旦获得文件指针,
FILE *stream = fopen(stream, “rb”);
if (stream != NULL)
您必须在程序结束后关闭流文件指针,并且如果您必须管理多个文件,您将使用一个专用作文件读取的线程。