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

标签 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 是否可以加速。

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

最佳答案

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

尝试使用 mmap 来提高性能。

关于C++ 快速读取较大文件的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15738605/

相关文章:

c++ - NetUserGetInfo 失败

php - 如何逐行流式传输 GET 请求?

c++ - 为什么我不能将具有不可复制类参数的 lambda 转换为 std::function?

c++ - 将时间 API 从 Linux 移植到 Visual Studio 2008

c++ - C++ 中的 sort() 可以有 n^2 性能吗?

c++ - 如何创建一个类似于 RAID1(镜像)的程序?

c++ - 使用函数和数组获取最大值和最小值

c++ - 什么是非空 STL 删除的安全等价物?

c++ - 我在使用纯虚拟方法和 Google Mock 时做错了什么?

c++ - 我可以判断是否实现了 C++ 虚函数吗