标签: c++ io fwrite fread
我有一个应用程序,我想从/向硬盘驱动器读取/写入数据,但同时我想指定将要使用的缓冲区的大小,以使应用程序更有效(与I / O相关)。
我实现了两个版本,一个使用读/写系统调用,一个使用fread / fwrite函数,在那里指定我调用setvbuf函数的缓冲区大小。
setvbuf
但是我注意到大输入的运行时间差异为2。
当您想利用从磁盘传输数据块以最小化I / O总量时,是否应始终首选使用读/写系统调用,这引发了一些问题。
答案 0 :(得分:1)
这取决于读/写的数据量,如果将缓冲区设置得非常小,则读/写大量数据效率低。
Here是一种比较。