java 写文件 速度_关于java:哪个文件写入速度更快?

我对处理大型文件和有关内存的约束的经验很少。

请注意,我使用Java作为编程语言。

我必须找到文件大小为15GB的记录,然后将结果写入另一个文件。基本上,这是一个搜索范围功能的实现。我的目标是将我范围内的记录写到结果文件中,并用新行分隔。那就是每个记录应该放在单独的行上。此类查询的数量约为400-1000。因此,每个查询将导致写入许多位于其范围内的记录。

那么以下哪个是更快的方法?

1-一旦开始获取查询范围记录,就开始将它们连续写入文件中吗?

2-我将记录存储在某个字符串中,并为找到的每个记录添加字符串,然后最后写出来?

3-使用字符串生成器连接每个查询的结果,然后在末尾写入文件?但是字符串生成器不支持换行符。

4-制作自己的数据结构?

5-创建记录的数组列表,然后在最后遍历以写入文件?

请让我知道就IO和MM而言哪种方法最快。

好吧,我们不能使用数据库,因为它是一个用Java构建数据库的项目,因此我们不能使用任何提供任何索引或数据库相关功能的库。 抱歉,未标记回答的问题是什么意思? 您是否在谈论我在Stack Overflow上提出的其他问题? 谢谢 !

并不是说StringBuilder是最好的解决方案,但是我几乎肯定它支持换行

操作系统级别的写缓冲非常有效。 除非您有探查器数据表明存在问题,否则请选择#1。

好的谢谢! 我正在尝试这个。

+1:不要忘记使用BufferedOutputStream之类的缓冲区。 如果您的编程效率足够高,您的瓶颈可能就是I / O。

我认为Map and Reduce最适合于此。 我还没有从事这个工作,但是参加了相同的会议,而那个家伙为此使用了相同的例子。 拆分文件,让多个程序运行相同的搜索查询-Map,然后在完成搜索后,可以使用Reduce将所有答案合并为一个

其实我的钥匙不是唯一的。 我的数据只有两列,一列是键,另一列是值。 密钥的可变大小范围为7到15位数字,并且密钥也在数据中重复。 所以我怀疑我是否可以将散列用于键,因为MapReduce将散列用于键。 非常感谢您的建议。

2和3听起来都像是本地实现的缓冲实现。 一种更简单,更有效的方法是执行#1,但用BufferedOutputStream包装FileOutputStream。

如果您谈论的是大量记录,则5号可能不是一个好主意,因为您实际上可能会导致交换(这只会损害性能)。

到目前为止,我使用的方法是将记录写到大小等于PageSize(4096K)的缓冲区中,然后使用Java Random Access File。 write chars写入一页大小的字符串缓冲区。 但是看来您告诉的方法要快得多。 所以,现在我将尝试使用它。 谢谢 !

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值