首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >读写操作的分离是否提高了程序效率?

读写操作的分离是否提高了程序效率?
EN

Stack Overflow用户
提问于 2015-06-07 23:41:19
回答 1查看 78关注 0票数 0

我为类编写了一个程序,它接收来自URL的数据,将其解析为关键短语,然后将短语、行号和列号写入文本文件。

目前,我是作为一个单独的操作来执行这个操作的,在这个操作中,URL被输入到一个BufferedReader进行读取,一个扫描器用于解析,然后进入一个循环,在这个循环中,每一行都被梳理,并使用一系列条件语句来检查所述关键短语的存在。当找到匹配时,我将写入文件。

读取的文件大约是60K行文本,平均需要4000毫秒左右才能从开始到完成这个完整的操作。将任务分解,先将文件读入数据结构,然后将结果输出到文件中,而不是同时执行这两种操作,这样会更有效吗?

另外,从URL中提取数据与在本地读取数据相比会产生多大的影响?我可以选择两者都做,但我认为这将取决于我的宽带速度。

编辑:有点不错的测试用例。在过去的一周里,我们改变了我们的ISP,并将我们的宽带速度从6Mb/秒提高到了30 6Mb/秒。这使我的平均读/解析/写次数减少到1500 my。有趣的是,看看微小的差异如何能在性能上产生这样的影响。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-08 09:25:44

这取决于您在数据处理部分实现并行的方式。

此时,您依次读取所有内容--然后处理数据--然后编写它。因此,即使将其分解为3个线程,每个线程也取决于前一个线程的结果。

因此,除非在完全接收数据之前就开始处理数据,否则这不会产生任何影响,而只会增加开销。

您必须对生产者/消费者的流进行建模,例如,在流中分别读取行,然后将其放到工作队列中进行处理。对于处理过的行也是如此,这些行随后被放入队列中,然后写入文件。

这将允许进行并行读/处理/写操作。

顺便说一句--也许你主要受到从URL读取文件的速度的限制,因为所有其他步骤都是在本地进行的,并且是数量级更快的步骤。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30699579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档