2012-06-19 49 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