如果要明确指定缓冲区大小,是否应该使用fread / fwrite或读/写系统调用?

时间:2015-01-20 11:27:05

标签: c++ io fwrite fread

我有一个应用程序,我想从/向硬盘驱动器读取/写入数据,但同时我想指定将要使用的缓冲区的大小,以使应用程序更有效(与I / O相关)。

我实现了两个版本,一个使用读/写系统调用,一个使用fread / fwrite函数,在那里指定我调用setvbuf函数的缓冲区大小。

但是我注意到大输入的运行时间差异为2。

当您想利用从磁盘传输数据块以最小化I / O总量时,是否应始终首选使用读/写系统调用,这引发了一些问题。

1 个答案:

答案 0 :(得分:1)

这取决于读/写的数据量,如果将缓冲区设置得非常小,则读/写大量数据效率低。

Here是一种比较。