1

20,000 行以上の .csv ファイルを読み込もうとしていますが、各行には約 300 のフィールドがあります。

独自のコードを使用して行ごとに読み取り、行をフィールドに分割し、フィールドを対応するデータ型 (整数、倍精度など) に変換します。次に、これらのデータは、コンストラクターを介してクラス オブジェクトに転送されます。

ただし、あまり効率的ではないことがわかりました。これらの 20k 以上の行を読み取り、20k 以上のオブジェクトを作成するのに約 1 分かかりました。

高速 csv パーサーについてググったところ、多くのオプションがあることがわかりました。いくつか試してみましたが、時間のパフォーマンスにはあまり満足できませんでした。

大きな .csv ファイルを読み取るためのより良い方法はありますか? よろしくお願いします。

4

1 に答える 1

2

解析またはファイルの処理のための効率的な方法は、解析を開始する前にできるだけ多くのファイルをメモリに読み込むことです。

ファイル I/O は、コンピューターの黎明期から、コンピューター システムの遅い部分の 1 つです。たとえば、データの解析には 1 マイクロ秒かかる場合があります。ハード ドライブからのデータの読み取りには、1 ミリ秒 == 1000 マイクロ秒かかる場合があります。

データに大きな配列を割り当ててからデータを配列に読み込むことで、プログラムを高速化しました。次に、配列内のデータを処理し、ファイル全体が処理されるまで繰り返します。

もう 1 つの手法はメモリ マッピングと呼ばれ、必要に応じて OS がファイルのメモリへの読み込みを処理します。

投稿を編集して、ボトルネックがあるコードを表示してください。

于 2013-08-14T16:15:31.613 に答える