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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 高阳 中级黑马   /  2013-1-8 01:14  /  1875 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在程序中读取数据使用缓冲区技术,有点不明白,使用缓冲区和不使用缓冲区的区别是什么,老师讲的是提高效率,那这个效率是指哪方面呢?是注重指使用存储空间的高效率,还是注重指读写数据的速度

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

5 个回复

正序浏览
缓冲器为暂时置放输出或输入资料的内存。缓冲器内资料自储存设备(如硬盘)来,放置在缓冲器中,须待机送至CPU或其他运算设备。 缓冲区这个中文译意源自当计算机的高速部件与低速部件通讯时,必须将高速部件的输出暂存到某处,以保证高速部件与低速部件相吻合. 后来这个意思被扩展了,成为"临时存贮区"的意思。

评分

参与人数 1技术分 +1 收起 理由
邵新瑜 + 1 神马都是浮云

查看全部评分

回复 使用道具 举报
嗯,大概明白了
回复 使用道具 举报
用缓冲区的引入主要是
1、为了解决cpu与I/O设备间速度不匹配的矛盾
上面同学的例子cpu与硬盘之间存在主存储器,因为硬盘的存储数据比cpu中要低了几个数量级,而cpu本身也具有缓存区,cache1 cache2 目前计算机cpu已经有三级缓存,可以大大提升多核心对于缓存区的利用率,提高cpu利用率
2、可以减少cpu的中段频率,降低cpu中断响应时间的限制
2楼同学的那个远程视频存储,如果没有使用缓存,这每次远程计算机传来一次(一位)的数据来接受,则cpu势必会每收到一次,就在规定的cpu响应时间中中断一次cpu,否则数据就会被冲掉,如果设置一个8位缓存,则cpu就可以在原来的8倍时间中来处理时间
3提高cpu和I/O设备之间并行性
cpu与I/O设备之间可以设置双缓冲,cpu可以工作完执行其他指令,而不必等I/O设备完成工作。提高了运行效率

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 陈丽莉 于 2013-1-8 09:39 编辑

      无论是访问还是修改数据都是高效率的,因为缓冲区的读写速度要比其他区(比如硬盘)快很多(小于cpu),这不仅是因为缓冲区的制作成本要更高,材料要更好;就算是同一个区划分出一个缓冲区来,从寻址方面考虑也可以降低查找访问的时间。
    缓冲区就是预先准备好将要使用的数据,大大减缓了等待的时间。也协调了访问速度差距过大的两个区域的时间。(比如cpu和硬盘)
    举个例子:假如cpu下一个任务是处理硬盘中的文件A,cpu的处理速度是非常快的,但是硬盘的读写速度非常慢,那么有了缓存区(缓存区的速度大于硬盘小于cpu),就在cpu还执行上一个任务的时候,预先将要处理的数据复制在缓存区中,这样便大大缩短了处理的时间,减少cpu等待的时间。(复制回硬盘也是同理,都是经过缓存区做一个“中间人”)PS:由于缓存区成本昂贵,基于最优的性价比,仍然保留了硬盘。但市面上也是有整个硬盘都是缓存的材料的,非常滴贵呀。

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
提高的是读写效率,这个是针对大文件才能体现出来。就像我们在看网络视频那样,如果网速慢,我们看视频就很不流畅,我们会暂停,让它缓冲到足够的视频资源才开始看。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马