Sno*_*ish 5 c++ file-io ifstream fread
哪个更快?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();
}
Run Code Online (Sandbox Code Playgroud)
小方法中的多个fin.read()调用会降低程序速度吗?我应该只在main方法中使用1 fin.read()并将缓冲区传递给较小的方法吗?我想我要写一个小程序进行测试。
谢谢!
您真的确定fread将整个文件放入内存中吗?可以缓冲文件访问,但我怀疑您是否真的将整个文件放入内存中。我认为ifstream::read只是fread在幕后使用更符合 C++ 的方式(因此是从 C++ 中的文件读取二进制信息的标准方式)。我怀疑是否存在显着的性能差异。
要使用fread,必须打开文件。它不仅仅需要一个文件并立即将其放入内存。所以ifstream::open == fopen和ifstream::read == fread。
| 归档时间: |
|
| 查看次数: |
10412 次 |
| 最近记录: |