如果要显式指定缓冲区大小,应使用 Fread/FWRITE 还是读/写系统调用
should you use fread/fwrite or read/write system calls when you want to specify the buffer size explicitly?
我有一个应用程序,我想从/向硬盘驱动器读取/写入数据,但同时我想指定将使用的缓冲区的大小,以使应用程序更高效(与I/O相关)。
我实现了两个版本,一个使用读/写系统调用,另一个使用fread/fwrite函数,其中指定了我对setvbuf
函数调用的缓冲区大小。
但是,我注意到大型输入的运行时间差异为 2。
这引发了一些问题,即当您想要利用从磁盘传输数据块的能力以最小化 I/O 总量时,是否应始终首选使用读/写系统调用。
这取决于要读/写的数据量,如果将缓冲区设置为非常小,则读取/写入大量数据的效率低下。
这是一个比较。
相关文章:
- 对fread的返回值感到困惑
- 将fwrite转换为C++类型代码以写入二进制文件
- 在数据写入磁盘之前,fwrite 会阻塞吗?
- 这个 matlab 代码的C++等价物是什么(fread matlab vs fread C/C++)?
- 我如何使用ifstream使用以下类似fread()的语句?
- 服务器状态到 XML 使用 fwrite?
- Fread C++ in C#.我知道我需要字节缓冲区,但并不完全在那里
- fwrite 4 字符数组,将写入 7 而不是 4
- 奇怪的内存消耗 C fread / C++ 读取函数,基于 Linux sysinfo 数据
- 在C++中使用 fread() 来解释这个结果是什么?
- 我应该如何看待 fread() 的参数?
- 如何正确地 fread() 和 fwrite() 一个非文本文件?
- 使用 fwrite() 和 fread() 进行二进制输入/输出
- 使用 fwrite/fread 对矩阵进行二进制(反)序列化不起作用
- 为什么要使用fopen打开流,并使用读/写(而不是fread/fwrite)执行I/O
- 如果要显式指定缓冲区大小,应使用 Fread/FWRITE 还是读/写系统调用
- 我正在尝试使用 fread 和 fwrite 来制作复制函数,但根据缓冲区大小,我不断得到奇怪的输出
- 使用fread/fwrite将文件复制到USB的性能
- "fwrite"在"fread"之后不起作用?
- matlab与c/cpp之间的fwrite和fread