首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java:多线程字符流解码

Java:多线程字符流解码
EN

Stack Overflow用户
提问于 2010-08-09 16:39:11
回答 4查看 1.2K关注 0票数 18

我正在维护一个高性能的CSV解析器,并试图最大限度地利用最新技术来提高吞吐量。对于此特定任务,这意味着:

Nehalem闪存(我们拥有相对便宜的PCIExpress卡,1 TB的存储,可达到1 GB/s的持续读取performance)

  • Multiple核心)(我们拥有一台具有16个硬件线程的廉价
  • 服务器)

CSV解析器的第一个实现是单线程的。文件读取,字符解码,字段分割,文本解析,所有这些都在同一个线程中。其结果是吞吐量约为50MB/s。不错,但远低于存储限制……

第二个实现使用一个线程读取文件(在字节级别),一个线程解码字符(从ByteBuffer到CharBuffer),使用多个线程解析字段(我指的是将分隔的文本字段解析为双精度、整数、日期...)。这个速度更快,在我们的机器上接近400MB/s。

但仍远低于我们的存储性能。这些SSD在未来会再次改善,我们不会在Java中发挥最大的作用。很明显,当前的限制是字符解码( CharsetDecoder.read(...) )。这就是瓶颈,在功能强大的Nehalem处理器上,它以400MB/s的速度将字节转换为字符,非常好,但这必须是单线程的。CharsetDecoder是有状态的,这取决于所使用的字符集,并且不支持多线程解码。

所以我向社区提出的问题是(感谢你到目前为止阅读了这篇文章):有人知道如何在Java中并行化字符集解码操作吗?

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

https://stackoverflow.com/questions/3438466

复制
相关文章

相似问题

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