A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© WakeUp 中级黑马   /  2014-11-2 21:53  /  1501 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 WakeUp 于 2014-11-3 12:33 编辑

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

评分

参与人数 1黑马币 +1 收起 理由
杨佳名 + 1

查看全部评分

3 个回复

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

读写同样长度的字节,cpu在读写没个字节的时间是一样的,读写一段数据跟一个一个读写所用时间应该是一样的,我认为是缓冲技术节省的应该是线程争抢cpu执行权的时间,读写一段数据,cpu可能会一直执行,而一个一个读写则是读或写一次后就释放执行权,之后再去争抢cpu执行权。
这是我的理解,不知道是否正确。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马