日期:2014-05-20  浏览次数:20582 次

IO是如何利用缓冲区来搞高性能的,原理是什么?
IO是如何利用缓冲区来搞高性能的,原理是什么?
我知道有种说法,很笼统。比如读缓冲时,如果没有缓冲区,CPU就总是在一次次的读,如果有了,可以一次性读取,这样节省时间。
这样的回答我不明白。这个CPU的节省又不是给我的这个程序节省的,大不了操作系统可以多用一些CPU干别的了。对于我的程序来说,我一次次的读,和等着数据进入缓冲区再一次性的读,在时间上根本没有分别呀。
以上是我的理解,大家都是怎么认识缓冲区的。

------解决方案--------------------
这个问题是《操作系统》的问题。
操作系统每次去读外设时, 多是有代价的。你每次去读一个字节, 那么每次多会付出一些代价。
如果, 一次性读取很多字节的话, 代价就小了很多了。速度就快了很多了。
------解决方案--------------------
引用楼主 hurt75 的帖子:
对于我的程序来说,我一次次的读,和等着数据进入缓冲区再一次性的读,在时间上根本没有分别呀。

------解决方案--------------------
引用楼主 hurt75 的帖子:
IO是如何利用缓冲区来搞高性能的,原理是什么?
我知道有种说法,很笼统。比如读缓冲时,如果没有缓冲区,CPU就总是在一次次的读,如果有了,可以一次性读取,这样节省时间。
这样的回答我不明白。这个CPU的节省又不是给我的这个程序节省的,大不了操作系统可以多用一些CPU干别的了。对于我的程序来说,我一次次的读,和等着数据进入缓冲区再一次性的读,在时间上根本没有分别呀。
以上是我的理解,大家都是怎么认识缓冲区的。

------解决方案--------------------
写,我知道,他会积累一部分之后一起写入硬盘,与buffer有关,如果非正常手段中断,很有可能造成数据丢失,有时候要用flush()刷一下。
置于读,也许它一口气读了很多,然后再在buffer里面选你要的给你。
------解决方案--------------------
你想想买满很多东西放在冰箱里,需要吃时就打开冰箱吃和每次需要吃时就去离你家十公里远的超市里买一颗瓜子来磕来进行类
比一下就知道了。。