使用 java 语言,我阅读了包含数字的文本文件。有 TB 的数据和数千亿的数字。
目标是尽可能快地获取数据,并尽量减少 GC 活动。我想将文本直接解析为基元(double、float、int)。
直接我的意思是:
- 无需实例化任何瞬态辅助对象
- 在 java.lang.Double、java.lang.Float 中没有装箱数据...
- 无需创建瞬态 java.lang.String 实例(如果要调用 JDK Double.parseDouble(...),这是一个强制性步骤)
到目前为止,我一直在使用 javolution 框架:
double javolution.text.TypeFormat.parseDouble(CharSequence sequence);
我查看了 javolution 代码,它确实没有分配任何瞬态对象。并且因为它接受一个 CharSequence,您可以呈现从数据文件中解码的字符,而无需实例化瞬态字符串。
有替代方案或更好的方法吗?