0

私は過去1時間グーグルで検索しましたが、これに対する答えが見つかりません。

私は大きなテキスト ファイル (1GB) を持っており、これをすべてマップしたファイルも持っているので、行 x から行 y に目的のデータが含まれていることがわかります。

私の質問は、ファイル内のすべての行を反復せずに、関心のある行だけを取得するにはどうすればよいですか?

このようにすることに興味がある主な理由は、パフォーマンス上の理由からです。これらの行を見つけるために、行 1 から 504,432 に循環するよりも、行 503,432 から行 504,432 に移動する方が速いと思います。

どんなヒントでも大歓迎です

4

2 に答える 2

0

特定の行番号を探している場合は、とにかくすべての行を読み取ってカウントする必要があります。行が固定長の場合を除き、ファイルを読み取らずに行を数えることはできません。行を読むときに行を保存する必要はありません。必要な行番号のみを保存するか、後で使用するためにメモリに保持せずに処理します。

于 2013-08-28T09:02:50.370 に答える
0

これは時期尚早の最適化のケースだと思います。私はFileHelpers AsyncEngineを使用して ~6GB のファイルを処理していますが、「ファイルの読み取り」部分は決してプロセスの最も遅い部分ではありません。

最初の 500k 行を読み取り、何もしないのにどれくらいの時間がかかりますか? どのくらいの時間を節約できますか?

于 2013-08-28T09:02:58.147 に答える