Go에서 CSV 파일을 효율적으로 읽고 쓰기
데이터 처리의 일반적인 작업 중 하나는 효율적인 방식으로 CSV 파일을 읽고 쓰는 것입니다. 질문에 제공된 코드 조각은 CSV 파일을 읽고, 데이터를 처리하고, 다시 쓰는 느린 방법을 보여줍니다. 처리하기 전에 전체 파일을 메모리에 로드하는 접근 방식에는 잠재적인 비효율성이 있습니다.
코드를 최적화하려면 .Read()를 호출하여 파일을 점진적으로 읽고 한 번에 한 줄씩 처리하는 것이 좋습니다. 이렇게 하면 전체 파일이 메모리에 로드되는 것을 방지할 수 있어 특히 대용량 파일의 경우 성능이 크게 향상될 수 있습니다.
대체 접근 방식은 다음과 같습니다.
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