哪个更快?ifstream
或fread
。
我应该使用哪个来读取二进制文件?
fread()
将整个文件放入内存。
因此,在 之后fread
,访问它创建的缓冲区很快。
是否ifstream::open()
将整个文件放入内存?
还是每次运行时它都会访问硬盘ifstream::read()
?
那么... ifstream::open()
==fread()
吗?
或 ( ifstream::open(); ifstream::read(file_length);
) == fread()
?
还是我应该使用ifstream::rdbuf()->read()
?
编辑: 我的 readFile() 方法现在看起来像这样:
void readFile()
{
std::ifstream fin;
fin.open("largefile.dat", ifstream::binary | ifstream::in);
// in each of these small read methods, there are at least 1 fin.read()
// call inside.
readHeaderInfo(fin);
readPreference(fin);
readMainContent(fin);
readVolumeData(fin);
readTextureData(fin);
fin.close();
}
小方法中的多个 fin.read() 调用会减慢程序的速度吗?我应该只在主方法中使用 1 fin.read() 并将缓冲区传递给小方法吗?我想我要写一个小程序来测试。
谢谢!