首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在java中处理大文件

在java中处理大文件
EN

Stack Overflow用户
提问于 2012-03-15 04:28:41
回答 2查看 561关注 0票数 8

我有一个大约10 GB的大文件。我必须在Java中对文件进行排序、过滤等操作。每个操作都可以并行完成。

启动10个线程并并行读取文件好吗?每个线程读取1 GB的文件。有没有其他方法可以解决超大文件的问题并尽可能快地处理它们?NIO适用于这样的场景吗?

目前,我正在串行执行操作,大约需要20分钟来处理这样的文件。

谢谢,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-03-15 04:31:02

启动10个线程并并行读取文件好吗?

几乎可以肯定不会--尽管要视情况而定。如果它来自SSD (实际上没有寻道时间),那么可能会。如果它是一个传统的磁盘,肯定不是。

但这并不意味着您不能使用多个线程-您可以创建一个线程来读取文件,只执行最基本的任务来将数据分成可处理的块。然后使用生产者/消费者队列让多个线程处理数据。

如果不知道“排序、过滤等”(这是相当模糊的),我们就不能从一开始就知道进程的并行化程度--但是尝试在单个文件上并行执行IO可能没有什么帮助。

票数 11
EN

Stack Overflow用户

发布于 2012-03-15 04:31:10

尝试分析代码以查看瓶颈所在。您是否尝试过让一个线程读取整个文件(或尽可能多地读取),并将其交给10个线程进行处理?如果文件I/O是您的瓶颈(这似乎是合理的),这应该会改善您的总体运行时间。

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

https://stackoverflow.com/questions/9709782

复制
相关文章

相似问题

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