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>
이 접근 방식은 채널을 사용하여 전달합니다. 리더 고루틴에서 메인 고루틴으로의 기록을 처리하여 보다 효율적인 증분 처리 접근 방식을 허용합니다.
점증적으로 데이터를 읽고 처리하는 이 기술을 채택하면 CSV 읽기 성능을 크게 향상시킬 수 있습니다. 그리고 코드를 작성합니다.
위 내용은 Go에서 CSV 파일을 효율적으로 읽고 쓰는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!