2012-06-19 48 views
0

解析我有一些文本文件,它是在一个固定的,重复的格式,如:快速文本文件中的Java

Q 32,0 16 
q 27 
b 21 
I 0 
P 1 
d 0 
m 31,0 
Q 48,0 16 
q 27 
b 2 
I 2 
P 1 
d 0 
m 31,0 
. 
. 
. 

我想分析他们在Java中。我想知道的是解析这种文本文件的最快方法。如果对性能有帮助,我可以更改文本文件的输出格式,因为这里唯一的要求是解析速度。 我也可以使用外部库。

+1

使用扫描仪对你来说太慢了? – Thihara

+0

@Thihara是的,事实上我正在使用扫描仪本身。对于文本文件的大小相对较小的情况,比如3-4000行,性能还是不错的,但是当我得到30-40000行这样的大文件时,性能不是那么好,而且我会喜欢改善。 –

回答

5

解析的最快速度是使用二进制格式。我认为你使用本地字节顺序,你应该能够读取这类数据每秒约2000万条目。


这里是一个以高吞吐量和低延迟读写二进制数据的例子。

https://github.com/peter-lawrey/Java-Chronicle

这种格式的设计是读因为它是写(与流程之间不到一微秒的延迟)

因为我怀疑你需要你可以用比这更简单的格式是高吞吐量。 ;)

顺便说一句:该库支持无内存读取和写入文本,如longdouble values目录到/从内存映射的ByteBuffer。因此,它可以用作快速文本记录器,每秒支持超过一百万个真实文本消息。

+0

+1,但我很想看到一个简单的例子:) – epoch

+0

同样在这里,一个例子会解释如何使用它.. :) –

+0

同样我也想看看现在! :-D – Thihara