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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoHei 中级黑马   /  2013-5-14 02:13  /  1936 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

20黑马币
本帖最后由 xiaoHei 于 2013-5-14 13:44 编辑

我们知道,在向文件中写入数据时,使用缓冲区要比一个字节一个字节的写数据效率高很多。
但是,计算机在真正的向硬盘中写数据时,都是一个字节一个字节的写的。
问题1:都是一个字节一个字节的向文件中写数据,效率高在哪里?
问题2:有人说:”使用缓冲区可以减少对硬盘的访问次数。“,这句话对不对?
            我想了解了上个问题,这个问题也就容易理解了。
所以请大神,解释使用缓冲区和不使用缓冲区,到底有什么区别。
谢谢。

最佳答案

查看完整内容

问题1:高效,可以举出很多现实例子,搬运货物,在能力范围内,一次多搬运点是不是比一次拿一点点效率要高?因为每次搬运的动作还有很多开销,不管你是弯腰的次数、走路的路程(跟计算机一样,当有缓冲区时,相当于有一个篮子工具,可以放进去数据,一次性搬运很多,避免多次调用底层资源多次读写) 问题2:这个是对的,不过IO流的目的不一定是硬盘,可以是内存、可以是屏幕,当输出是硬盘的话,把数据装在缓冲区(内存的读写效率比 ...

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

6 个回复

倒序浏览
本帖最后由 曹睿翔 于 2013-5-14 07:15 编辑

问题1:高效,可以举出很多现实例子,搬运货物,在能力范围内,一次多搬运点是不是比一次拿一点点效率要高?因为每次搬运的动作还有很多开销,不管你是弯腰的次数、走路的路程(跟计算机一样,当有缓冲区时,相当于有一个篮子工具,可以放进去数据,一次性搬运很多,避免多次调用底层资源多次读写)
问题2:这个是对的,不过IO流的目的不一定是硬盘,可以是内存、可以是屏幕,当输出是硬盘的话,把数据装在缓冲区(内存的读写效率比硬盘高了去了,笔记本性能的优劣还看二级三级缓存的大小),一次性读出、写入,会节省开销,记住调用底层资源是很浪费资源的事

像这些概念性东西,搜搜论坛你就知道了

http://bbs.itheima.com/forum.php?mod=viewthread&tid=35369&highlight=%E7%BC%93%E5%86%B2%E5%8C%BA
http://bbs.itheima.com/forum.php?mod=viewthread&tid=35986&highlight=%E7%BC%93%E5%86%B2%E5%8C%BA

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 淡定

查看全部评分

回复 使用道具 举报
1、一个例子,我们吃花生。要将花生壳扔到门口的垃圾篓里。花生在房间桌子上。你可以选择吃一粒花生,就跑到门口将壳扔到垃圾篓,
再跑回来吃第二粒花生,以此类推。也可以用个塑料袋把花生壳装起来,等吃完了,再跑到门口把花生壳一次倒进垃圾篓。
两种方法都是一粒一粒吃的。但是第一种要来回折腾,浪费时间,效率低。

2、第一种方法,我们每吃完一粒花生就要访问一次垃圾篓,第二种方法,只要访问几次或一次就可以。所以,第二句话是对的。

另外,cpu在io设备上的读写(如硬盘)比cpu在内存中的读写是要慢很多的。(内存读写比硬盘读写快的多,这一点应该没问题很好理解),
缓冲区就是一块内存区,它用在io设备和cpu之间,所以,缓冲区,可以缓冲高速cpu与内存,内存与其它io设备之间速度不匹配的情况。减少
对io设备的读写次数,提高效率。


评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
擦,看到回复,我自己的观点就不再是我的观点了,我不写答案了,前辈都对了
回复 使用道具 举报
罗海清 发表于 2013-5-14 07:34
擦,看到回复,我自己的观点就不再是我的观点了,我不写答案了,前辈都对了 ...

没事的  说说自己的观点,促进一下学习。很好的  :kiss:
回复 使用道具 举报
王溢君 来自手机 中级黑马 2013-5-14 12:04:20
地板
你的数据都在硬盘里,一下子全部拿到内存,肯定比你分几次拿快。
回复 使用道具 举报

1,使用缓冲就是把你要写的数据先一个一个的放到缓冲中,然后等你写完了,再一次性从缓冲中写入到你的目的地中,打个比方:你去买10个苹果,买一个回一次家然后再去买,这是不使用缓冲的;使用缓冲的是你去买10个苹果,一次性买了10个,然后再回家,显然后者是效率更高吧!
2,就跟你买苹果一样,家就好比你的硬盘,你买一个回一次家,买10个就得回10次,而使用缓冲,同样买10个苹果就只要回一家就行了,所以当然是使用缓冲的读写次数少了呀!
希望对你有所帮助!

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马