免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4363 | 回复: 16
打印 上一主题 下一主题

BufferedStream连续读和间断读效率上差很多么? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-01 09:37 |只看该作者 |倒序浏览
我在处理两个大文本的查找比较的时候,一开始仅对大文件进行了内存缓冲,程序运行大概要4天,前天我对小文件也进行了缓冲,时间缩短到1天左右。

我想不明白,本身BufferedStream已经是基于缓冲的了,连续读和间隔的读为什么会有这么大的差别?

论坛徽章:
0
2 [报告]
发表于 2006-03-01 17:20 |只看该作者
哎?没有人关注一下 那么我再说两句,,,

我是这么给自己解释的:连续读,cpu的时间片不被或很少被打断,io可连续读写;间断的读,暂时不读的时候cpu处理其他进程,甚至io也处于挂起阻塞的状态,因此尽管很短的时间内io读马上又被请求了,但是也需要时间花费,,,这个时间被百万千万化就是个庞大的开销

这个解释太模糊了,而且全是臆测,希望研究过io的给些看法

论坛徽章:
0
3 [报告]
发表于 2006-03-02 11:48 |只看该作者
哎,水一下

论坛徽章:
0
4 [报告]
发表于 2006-03-02 19:22 |只看该作者
lz 你描述得有点混乱的样子....

“我在处理两个大文本的查找比较的时候,一开始仅对大文件进行了内存缓冲,程序运行大概要4天,前天我对小文件也进行了缓冲,时间缩短到1天左右。”

对 大 文件也进行缓冲
对 小 文件也进行缓冲

一个是 四天,一个是一天




怎么缓冲处理?文件分别多大?太不清楚了


“连续读和间隔的读为什么会有这么大的差别” 后来突然来个 间隔和连续的解释,被你搞了一头雾水...

你的缓冲处理使用 间隔 或 连续等之类的处理?还是怎么个意思?

论坛徽章:
0
5 [报告]
发表于 2006-03-02 21:40 |只看该作者
呵呵,都说我自己头都被搞大了~描述的确实不清,抽象一下问题就是:

我打开一个BufferedStream,基于文件的,现在使用两种方法从这里提取数据:
1.连续读取n行,也就是说程序中是在一个while中读的;
2.读一行,去执行一个不到半秒的内存动作(比如字符串比较,数值计算,等等),再读下一行,如此读取n行。
这两种读法确实存在差别,原因想不透;
不过发过帖子没人理,我就追加了一贴,讲我的想法

这回描述差不多了吧,大家的看法呢?

论坛徽章:
0
6 [报告]
发表于 2006-03-03 09:27 |只看该作者
你的意思是读操作时停下来和连续读?

你先计算出有多少个 半秒 操作,去掉那些时间,看看对不对

没有其他因素的话,应该是差不多的........

论坛徽章:
0
7 [报告]
发表于 2006-03-03 11:19 |只看该作者
我看了但是对于初学者的我.........帮不了你
只能安慰你一下了!!!..

论坛徽章:
0
8 [报告]
发表于 2006-03-03 12:29 |只看该作者
原帖由 wobushiwo 于 2006-3-3 10:27 发表
你的意思是读操作时停下来和连续读?

你先计算出有多少个 半秒 操作,去掉那些时间,看看对不对

没有其他因素的话,应该是差不多的........


这个是对我实际程序的一个抽象举例,实际处理中间隔应该没有半秒那么长,数据量100w以内。

不过,,采取连续读的方式,是在读进内存后基于内存再连续进行这个“半秒”操作的。换句话说,这两种方式都包含n个“半秒”动作

论坛徽章:
0
9 [报告]
发表于 2006-03-03 13:03 |只看该作者
说得是比较抽象

不过都是对已经打开个一个文件进行操作,连续和不连续应该是一样的,或说差不多的

根据我有限经验,C语言的操作IO的源文件中,缓存其实很简单,跟内存挂沟,而现在

内存管理是交由系统处理的,比较在多任务时一些需要 “挂起”,一些任务需要放进

swap space,以后需要时再抽调出来

你说的慢,有可能慢就出在这,但假如不连续时间比较短的话,或说中间没其他任务打扰的话,我估计差别应该不大的

论坛徽章:
0
10 [报告]
发表于 2006-03-03 13:06 |只看该作者
还有就是一些硬盘有自己传输/处理的cache空间,有的话

套用上面说的,因为多任务的问题,导致了这些慢的出现
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP