次のような固定された繰り返し形式のテキストファイルがいくつかあります。
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で解析したい。私が知りたいのは、そのようなテキスト ファイルを解析する最速の方法です。ここでの唯一の要件は解析速度であるため、パフォーマンスに役立つ場合は、テキスト ファイルの出力形式を変更できます。外部ライブラリも使用できます。
解析の最速速度は、バイナリ形式を使用することです。ネイティブ バイト オーダーを使用することをお勧めします。この種のデータでは、1 秒あたり約 2,000 万エントリを読み取ることができるはずです。
高スループットかつ低レイテンシでバイナリ データを読み書きする例を次に示します。
https://github.com/peter-lawrey/Java-Chronicle
この形式は、書き込みと同時に読み取られるように設計されています (プロセス間の待ち時間は 1 マイクロ秒未満)。
必要なのは高いスループットだけだと思うので、これよりも単純な形式を使用できます。;)
ところで: ライブラリは、メモリ マップされた ByteBuffer との間long
で、double
値ディレクトリなどのテキストの GC なしの読み取りと書き込みをサポートしています。そのため、1 秒あたり 100 万件を超える現実的なテキスト メッセージをサポートする高速テキスト ロガーとして使用できます。