在 Go 中高效讀寫 CSV 檔案
資料處理中的一個常見任務是以高效方式讀取和寫入 CSV 檔案。問題中提供的程式碼片段演示了一種讀取 CSV 檔案、處理資料並將其寫回的緩慢方法。潛在的低效率在於在處理之前將整個文件載入到記憶體中的方法。
為了最佳化程式碼,建議透過呼叫 .Read() 增量來讀取檔案並一次處理一行。這可以防止整個檔案被載入到記憶體中,從而可以顯著提高效能,尤其是對於大檔案。
這是一種替代方法:
<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>
這種方法使用通道來傳遞將記錄從reader Goroutine 傳輸到主Goroutine 進行處理,從而實現更有效率的增量處理方法。
透過採用這種涉及增量讀取和處理資料的技術,您可以顯著提高 CSV 讀取的效能並編寫程式碼。
以上是如何在Go中高效率讀寫CSV檔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!