我有许多文本文件,它们采用固定的重复格式,例如:
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解析它们。我想知道的是解析这样一个文本文件的最快方法。如果这有助于提高性能,我可以更改文本文件的输出格式,因为这里唯一的要求是解析速度。我也可以使用外部库。
我有许多文本文件,它们采用固定的重复格式,例如:
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解析它们。我想知道的是解析这样一个文本文件的最快方法。如果这有助于提高性能,我可以更改文本文件的输出格式,因为这里唯一的要求是解析速度。我也可以使用外部库。
最快的解析速度是使用二进制格式。我建议您使用本机字节顺序,并且您应该能够每秒读取大约 2000 万条此类数据的条目。
这里是一个以高吞吐量和低延迟读取和写入二进制数据的示例。
https://github.com/peter-lawrey/Java-Chronicle
此格式设计为在写入时读取(进程之间的延迟小于一微秒)
您可以使用比这更简单的格式,因为我怀疑您需要的只是高吞吐量。;)
顺便说一句:该库支持从内存映射的 ByteBuffer 读取和写入诸如值目录long
之类的文本的无 GC 读取和写入。double
因此,它可以用作快速文本记录器,每秒支持超过一百万条真实文本消息。