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

请注意,我使用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写入一页大小的字符串缓冲区。 但是看来您告诉的方法要快得多。 所以,现在我将尝试使用它。 谢谢 !

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

  1. 用java写一个日历_使用JAVA写一个简单的日历

    JAVA写一个简单的日历 import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDa ...

  2. 用java写分段函数_使用Java将分段函数转换为CSV文件

    这似乎有用 - 有点.无论如何,这可能是一个好的开始. public class CSVFun { // Where to start the scan of the function. static ...

  3. java写一个搜索引擎_搜索引擎—-Java实现一个简单的网络爬虫

    Java实现一个简单的爬虫程序. package SearchCrawler;import java.util.*;import java.net.*;import java.io.*;import ...

  4. java写新闻模板_基于java新闻发布及管理系统

    基于java新闻发布及管理系统 java 2020-10-18 下载地址 https://www.codedown123.com/44681.html Java新闻发布系统新闻发布及管理系统就是一个能 ...

  5. java写的家谱_关于java:家谱计划的逻辑

    我在Java中创建一个家庭树程序,或者至少试着去做.我已经开设了几个课程: 名字的获取者和设置者性别年龄等 FamilyMember-扩展个人getter以及设置家长和儿童 家庭-由多个族成员和添加方 ...

  6. Java写一个快速排序_快速排序java实现

    1.快速排序的思想 快速排序属于交换排序,是冒泡排序的升降版.相对于冒泡排序而言,快速排序增大了记录比较和移动的距离,将关键字较大的记录直接移动到后面,将关键字较小的记录直接移动到前面:不再是相邻两个 ...

  7. java项目----教务管理系统_基于Java的教务管理系统

    java项目----教务管理系统_基于Java的教务管理系统 2022-04-22 18:18·java基础 最近为客户开发了一套学校用教务管理系统,主要实现学生.课程.老师.选课等相关的信息化管理功 ...

  8. nginx 限制文件上传速度_nginx上传文件速度慢 Nginx上传文件全部缓存解决方案 - 硬件设备 - 服务器之家...

    nginx上传文件速度慢 Nginx上传文件全部缓存解决方案 发布时间:2017-03-09 来源:服务器之家 下面通过文字说明给大家详解Nginx上传文件全部缓存解决方案. 因为应用服务器(Jett ...

  9. java文件复制速度_【Java】Java代码拷贝文件的速度

    Java代码拷贝文件的速度究竟有多快? 前言 最近学习Java到了流处理,其中有种流叫FileInputStream和FileOutputStream,简单来说,就是操作文件的,老师给我们示范了一个非 ...

  10. 写文件 追加_总结Java中创建并写文件的5种方式

    在Java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面小编就帮大家总结一下Java中创建文件的五种方法. 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者 ...

最新文章

  1. Transformer杀疯了!力压DeepMind、百度,在GNN大赛夺冠
  2. 马自达新车全面取消触摸屏,意外引得叫好声一片
  3. Ansible — Inventory 清单文件
  4. 手把手教你插入数学公式,妈妈再也不用担心我写不了论文了
  5. Web前端主要学什么?这些知识要掌握
  6. qsort函数应用大全
  7. HDU - 4734 F(x) (2013成都网络游戏,数字DP)
  8. mysql5.6查看归档_MySQL5.6 使用 pt-archiver 分批删除、归档数据
  9. java项目如何更改路径_Java修改eclipse中web项目的server部署路径问题
  10. 泸州职称计算机,2018年11月四川泸州职称计算机考试10月8日开始报名
  11. android textview 动态高度自适应,TextView自适应高度(解决_UITextContainerView布局问题)...
  12. ext3,ext4,xfs和btrfs文件系统性能对比
  13. 基于模拟退火算法求解TSP问题(JAVA)
  14. 山寨版学子商城——成功上线!
  15. 一阶电路误差分析_PDE有限差分方法(12)——对流方程数值格式的分析方法
  16. 【C++】关于strlen函数使用的坑(与socket sendto函数配合使用)
  17. Python 第五篇 自制数字贺卡
  18. Jekyll 教程——合集(collections)
  19. 走进西藏――53个最基本的常识
  20. Jsp的四种作用域范围

热门文章

  1. HttpServletRequest即很多代码中的request对象
  2. 科沃斯的技术跃进:交互与场景才是未来
  3. 使用国内源来安装pytorch(速度很快)
  4. Machine Learning - week 4 - Non-linear Hypotheses
  5. vsftpd不支持目录软链接的解决办法
  6. 【JUC】JDK1.8源码分析之ReentrantReadWriteLock(七)
  7. js 程序执行与顺序实现详解
  8. 图文讲解 sqlserver 2000 评测版 数据库过期 的解决方法
  9. 【Tensorlayer系列】深度强化学习之DQN求解FrozenLake
  10. 魔方机器人设计中的问题