缓冲区 缓存

本文探讨了缓冲区在OpenGL中的重要作用,通过全缓冲和行缓冲的概念,解释了为何引入缓冲区来减少IO操作和提高性能。同时,文章详细区分了缓冲区与缓存,前者在于降低设备间速度差异,后者聚焦于CPU数据访问加速。关键词包括:缓冲区、缓存、OpenGL、全缓冲、行缓冲、数据传输、CPU速度匹配。
摘要由CSDN通过智能技术生成

缓冲区(buffer)

缓冲区是内存空间的一部分 用来缓冲输入和输出的数据
缓冲区具有一部分大小
缓冲区根据对应的是输入设备还是输出设备分为输入缓冲区,输出缓冲区
Buffer的核心作用是用来缓冲,缓和冲击。比如你每秒要写100次硬盘,对系统冲击很大,浪费了大量时间在忙着处理开始写和结束写这两件事嘛。用个buffer暂存起来,变成每10秒写一次硬盘,对系统的冲击就很小,写入效率高了,日子过得爽了。极大缓和了冲击。

引入缓冲区的原因

解除高速设备和低速设备的制约关系:
因为高速设备和低速设备的不匹配高速设备在完成后需要等待低速设备
例如打字机和电脑的关系 打印机打印的速度低于电脑传输数据的速度 我们再打印机内部设置缓冲区 将需要打印的文档传输到打印机的缓冲区 这样CPU在传输完数据只会可以完成别的工作 否则打印机将一直占用CPU直到打印工作完成
减少数据的读写次数
简单来说: 缓冲区就是一块内存区,作用于输入输出设备和CPU之间,用来存储数据。它使得低速的输入输出设备和高速的CPU能够协调工作,避免低速的输入输出设备占用CPU,解放出CPU,使其能够高效率工作。

OpenGL为什么要引入缓冲区

减少io操作次数,提高效率因为OpenGL每次绘制都可能需要大量的数据 ,并且这些数据可能大部分都不会发生改变,如果每次都要从客户端发送到服务端不仅占用大量资源还消耗时间,所以直接将数据传输到服务端的缓冲区

缓冲区分类

1、全缓冲
填满标准I/O缓存后才进行实际I/O操作。全缓冲的典型代表是对磁盘文件的读写。
2、行缓冲
在这种情况下,当在输入和输出中遇到换行符时,执行真正的I/O操作。这时,我们输入的字符先存放在缓冲区,等按下回车键换行时才进行实际的I/O操作。典型代表是键盘输入数据。我们想将数据写入到磁盘中,不是立马将数据写到磁盘中,而是先输入缓冲区中,当缓冲区满了以后,再将数据写入到磁盘中,这样就可以减少磁盘的读写次数,不然磁盘很容易坏掉。

缓冲区刷新

下列情况会引发缓冲区的刷新:
缓冲区满时;
关闭文件。
缓冲区溢出的时候,多余出来的数据会直接将之前的数据覆盖,这样缓冲区里的数据就发生了改变 所以缓冲区满的时候并不是全部数据都被刷新 而是只是多于出来的数据覆盖了之前的数据 叫做刷新

缓存(cache)

又叫高速缓冲存储器,读写速度基本和CPU一样
CPU的cache越大,级数越多,CPU的访问速度越快
磁盘和浏览器也有cache

缓存作用

因为内存的数据存取速度无法跟上CPU的速度,所以在cpu与内存间设置了cache为cpu的数据快取区,当计算机执行程序时,数据与地址管理部件会预测可能要用到的数据和指令,并将这些数据和指令预先从内存中读出送到Cache。一旦需要时,先检查Cache,若有就从Cache中读取,若无再访问内存,现在的CPU还有一级cache,二级cache。简单来说,Cache就是用来解决CPU与内存之间速度不匹配的问题,避免内存与辅助内存频繁存取数据,这样就提高了系统的执行效率。
Cache的核心作用是加快取用的速度。比如你一个很复杂的计算做完了,下次还要用结果,就把结果放手边一个好拿的地方存着,下次不用再算了。加快了数据取用的速度。

所以两个的区别

缓冲区是为了防止内存的多次访问 从100次降到10次 增加效率 就比如说那些顶点信息 就是先存在缓冲区 再一起发过去
缓存是加快cpu取用数据的速度 例如做完一个复杂的运算下次还要用就放倒缓存中 方便下次使用 也可以预先存入一些需要使用的指令什么的 方便取用

借鉴了这篇文章

缓冲区和缓存
这篇文章写的很好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值