码迷,mamicode.com
首页 > 其他好文 > 详细

read、fread

时间:2014-10-02 16:21:13      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:使用   文件   数据   sp   c   r   时间   ad   bs   

如果文件的大小是8k。
你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用
来实际从磁盘上读出。
如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁
盘上读出。
也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁盘。效率比read
/write要高4倍。
如果程序对内存有限制,则用read/write比较好。

 

我们使用函数向某个文件从当前流标签所在位置,读取n个字符。我们也会使用函数向文件的某个流位置写如n字符。但是,当这种写的动作小、而频繁。每次写又必须反映到硬盘上,也就是说需要频繁的操作硬盘,写一些小的更改,这是非常耗损效率。所以自然我们想到了,我们设立一个缓冲区,将那些要写入的数据先写到缓冲区中,当缓冲区满,或者其他情况发生的时候,我们在一起将他们写入到硬盘上。这样可以大大提高应用程序读写文件的速度。

 

这就是为什么需要缓冲,根本原因我认为是磁盘等外设的数据还和内存的速度相差甚远,所以我们不希望由于操作外设的原因让本来很快的内存和CPU跟着一起慢,我们想的办法:一是异步写(但这有时候不能符合应用要求),二就是缓冲读写。

 

而我们通常所理解的就是,read体系,就是那种无缓冲读写,不管是读还是写,调用这个体系的函数,会马上启动一次外设操作,读取数据或者写入数据。而fread体系则,使用了缓冲读写的方式,一定时间才调用read体系的函数。

read、fread

标签:使用   文件   数据   sp   c   r   时间   ad   bs   

原文地址:http://www.cnblogs.com/notlate/p/4004111.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!