黑马程序员技术交流社区

标题: 缓冲技术如何提高流的操作效率? [打印本页]

作者: WakeUp    时间: 2014-11-2 21:53
标题: 缓冲技术如何提高流的操作效率?
本帖最后由 WakeUp 于 2014-11-3 12:33 编辑

我知道缓冲加入了数组存储数据,一次读取多个数据写入多个数据,但是cpu在处理的时候还是一个一个字节读取到数组中,跟读一个写一个相比效率提高在哪里?只是是减少了线程争抢cpu的时间吗?

作者: cxdzh    时间: 2014-11-2 21:55
读入还好,但是写入硬盘的时候呢...一次写一个字节,写1024次,和一次写1024个字节..
作者: Kikyou2014    时间: 2014-11-3 05:41
效率的提高必须有读也有写,就是说read与write方法一起调用,比如while(len=(bufr.read(buf))!=-1)这个方法读的时间比while(len=(fis.read())!=-1)要长许多,write也是同样的。但问题是前者读了很多,之后写出了很多,同样多的数据,磁头在磁盘读写区域间的切换次数大大减少了
作者: WakeUp    时间: 2014-11-3 12:48
Kikyou2014 发表于 2014-11-3 05:41
效率的提高必须有读也有写,就是说read与write方法一起调用,比如while(len=(bufr.read(buf))!=-1)这个方法 ...

读写同样长度的字节,cpu在读写没个字节的时间是一样的,读写一段数据跟一个一个读写所用时间应该是一样的,我认为是缓冲技术节省的应该是线程争抢cpu执行权的时间,读写一段数据,cpu可能会一直执行,而一个一个读写则是读或写一次后就释放执行权,之后再去争抢cpu执行权。
这是我的理解,不知道是否正确。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2