我需要用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
的方法或库?
答案 0 :(得分:0)
由于我不确定它是否涵盖了您的所有期望,this library似乎可以提供您正在寻找的东西。
它提供以下方法:
double parseDouble(java.lang.CharSequence s, int start, int end) throws java.lang.NumberFormatException
如果它不是你想要的,抱歉花时间。