Эффективное чтение и запись файлов CSV в Go
Одной из распространенных задач при обработке данных является эффективное чтение и запись файлов 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