Wie kann ich CSV-Dateien in Go effizient lesen und schreiben?

Susan Sarandon
Freigeben: 2024-11-03 08:03:03
Original
484 Leute haben es durchsucht

How to Efficiently Read and Write CSV Files in Go?

Effizientes Lesen und Schreiben von CSV-Dateien in Go

Eine häufige Aufgabe in der Datenverarbeitung ist das performante Lesen und Schreiben von CSV-Dateien. Der in der Frage bereitgestellte Codeausschnitt zeigt eine langsame Methode zum Lesen einer CSV-Datei, zum Verarbeiten der Daten und zum Zurückschreiben. Eine potenzielle Ineffizienz liegt in dem Ansatz, die gesamte Datei vor der Verarbeitung in den Speicher zu laden.

Um den Code zu optimieren, wird empfohlen, die Datei schrittweise durch Aufruf von .Read() zu lesen und jeweils eine Zeile nach der anderen zu verarbeiten. Dadurch wird verhindert, dass die gesamte Datei in den Speicher geladen wird, was die Leistung insbesondere bei großen Dateien erheblich verbessern kann.

Hier ist ein alternativer Ansatz:

<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>
Nach dem Login kopieren

Dieser Ansatz verwendet einen Kanal zum Übergeben Datensätze von der Reader-Goroutine zur Haupt-Goroutine zur Verarbeitung übertragen, was einen effizienteren inkrementellen Verarbeitungsansatz ermöglicht.

Durch die Übernahme dieser Technik, bei der Daten inkrementell gelesen und verarbeitet werden, können Sie die Leistung Ihres CSV-Lesens erheblich verbessern und Code schreiben.

Das obige ist der detaillierte Inhalt vonWie kann ich CSV-Dateien in Go effizient lesen und schreiben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage