首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java:将文本解析为原语数,而无需对象实例化

Java:将文本解析为原语数,而无需对象实例化
EN

Stack Overflow用户
提问于 2012-12-06 11:19:32
回答 2查看 1K关注 0票数 1

使用java语言,我读取包含数字的文本文件。有三兆字节的数据和数千亿的数字。

目标是尽可能快地获取数据,并尽量减少GC活动。我想直接将文本解析为原语(double,float,int)。

我的直接意思是:

  • 不实例化任何临时助手对象
  • 没有java.lang.Double中的装箱数据,java.lang.Float.
  • 而不创建瞬态java.lang.String实例(如果要调用JDK Double.parseDouble(.),这是一个强制步骤)

到目前为止,我一直在使用javolution框架:

代码语言:javascript
复制
double javolution.text.TypeFormat.parseDouble(CharSequence sequence);

我查看了javolution,它确实没有分配任何临时对象。因为它接受一个CharSequence,所以您可以在不实例化瞬变字符串的情况下显示从数据文件中解码的字符。

有没有其他的选择或者更好的方法?

EN

回答 2

Stack Overflow用户

发布于 2012-12-06 11:21:45

方法Double.parseDouble(String)确实实例化了一个对象,但是它使用缓存,从字符串中返回一个双读。

这个答案提供了更多细节。

其余部分:爪哇包似乎是为了实时性能而编写的,因此它似乎是一个合适的包。

票数 2
EN

Stack Overflow用户

发布于 2012-12-06 11:32:45

StreamTokenizer,检查了这里,可能值侧写。它将十进制数解析为double,但不处理科学表示法。

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

https://stackoverflow.com/questions/13742527

复制
相关文章

相似问题

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