Go での CSV ファイルの効率的な読み取りと書き込み
データ処理における一般的なタスクの 1 つは、パフォーマンスの高い方法で CSV ファイルの読み取りと書き込みを行うことです。質問で提供されているコード スニペットは、CSV ファイルを読み取り、データを処理し、書き戻すための遅い方法を示しています。処理前にファイル全体をメモリにロードするアプローチには、潜在的な非効率性があります。
コードを最適化するには、.Read() を呼び出してファイルを段階的に読み取り、一度に 1 行ずつ処理することをお勧めします。これにより、ファイル全体がメモリに読み込まれることがなくなり、特に大きなファイルの場合、パフォーマンスが大幅に向上します。
代替アプローチは次のとおりです。
<code class="go">func processCSV(rc io.Reader) (ch chan []string) { ch = make(chan []string, 10) go func() { r := csv.NewReader(rc) if _, err := r.Read(); err != nil { //read header log.Fatal(err) } defer close(ch) for { rec, err := r.Read() if err != nil { if err == io.EOF { break } log.Fatal(err) } ch <- rec } }() return }</code>
このアプローチでは、チャネルを使用してデータを渡します。レコードをリーダーのゴルーチンからメインのゴルーチンに転送して処理することで、より効率的な増分処理アプローチが可能になります。
データを増分的に読み取り、処理するこの手法を採用することで、CSV 読み取りのパフォーマンスを大幅に向上させることができます。そしてコードを書きます。
以上がGo で CSV ファイルを効率的に読み書きするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。