Go での CSV ファイルの効率的な読み取りと書き込み
データ処理における一般的なタスクの 1 つは、パフォーマンスの高い方法で CSV ファイルを読み取りおよび書き込みます。質問で提供されているコード スニペットは、CSV ファイルを読み取り、データを処理し、書き戻すための遅い方法を示しています。処理前にファイル全体をメモリにロードするアプローチには、潜在的な非効率性があります。
コードを最適化するには、.Read() を呼び出してファイルを段階的に読み取り、一度に 1 行ずつ処理することをお勧めします。これにより、ファイル全体がメモリに読み込まれることがなくなり、特に大きなファイルのパフォーマンスが大幅に向上します。
別のアプローチは次のとおりです:
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 このアプローチでは、チャネルを使用してレコードをリーダー ゴルーチンから処理のためにメイン ゴルーチンに渡し、より効率的な増分処理アプローチを可能にします。
この手法を採用することで、読み取りとデータを段階的に処理すると、CSV の読み取りおよび書き込みコードのパフォーマンスを大幅に向上させることができます。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3