首页 / JAVA / Java文件i / o吞吐量下降
Java文件i / o吞吐量下降
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java文件i / o吞吐量下降,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1085字,纯文字阅读大概需要2分钟。
内容图文
我有一个程序,其中每个线程一次从文件中读取多行文件,处理行,并将行写入不同的文件.四个线程分割要在其中处理的文件列表.我在两种情况下遇到了奇怪的性能问题:
>四个文件,每个文件50,000行
>吞吐量从700线/秒开始处理,下降到~100线/秒
> 30,000个文件,每个12行
>吞吐量从800线/秒开始并保持稳定
这是我正在处理的内部软件,所以遗憾的是我无法共享任何源代码,但该程序的主要步骤是:
>拆分四个工作线程中的文件列表
>开始所有线程.
>线程一次最多读取100行并存储在String []数组中.
> Thread将转换应用于数组中的所有行.
>线程将行写入文件(与输入文件不同).
每个线程重复3-5次,直到完全处理完所有文件.
我不明白的是为什么每行12行的30k文件比一些多行文件的性能更高.我本以为打开和关闭文件的开销要大于读取单个文件的开销.此外,前一案件的表现下降具有指数性质.
我已将最大堆大小设置为1024 MB,并且最多使用100 MB,因此过载的GC不是问题.你还有其他建议吗?
解决方法:
根据你的数字,我猜GC可能不是问题.我怀疑这是磁盘的正常行为,由许多并发线程操作.当文件很大时,磁盘必须多次在线程之间切换上下文(产生重要的磁盘seek time),并且开销很明显.对于小文件,可能它们被读作单个块而没有额外的寻道时间,因此线程不会相互干扰太多.
使用单个标准磁盘时,串行IO通常比并行IO更好.
内容总结
以上是互联网集市为您收集整理的Java文件i / o吞吐量下降全部内容,希望文章能够帮你解决Java文件i / o吞吐量下降所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。