我需要在Java中解析几千兆字节、几亿行的文本数据。
每行存储在CharBuffer
(实现CharSequence
)中,并在固定位置包含多个整数和浮点数。
在第一个版本中,我使用了String.substring(int beginIndex, int endIndex)
和Integer.parseInt(String s)
以及Double.parseDouble(String s)
,但是速度非常慢。垃圾收集器消耗了大量资源,因为每行多次创建几十个临时String对象。
在我切换到Integer.parseInt(CharSequence s, int beginIndex, int endIndex, int radix)
之后,我得到了一个重大的性能提升。它可以直接从CharBuffer
解析数字。
不幸的是,我找不到这样的方法浮点数。
有人知道一个方法或库,它提供CharSequence
上的浮点解析和偏移量,而不是String
吗?
2条答案
按热度按时间ifsvaxew1#
因为我不确定它是否满足了您的所有期望,所以this library似乎可以提供您正在寻找的东西。
它提供了以下方法:
roejwanj2#
这是我以前做的,解析过程中不分配对象,代码可以缩短。