«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как эффективно читать и записывать файлы CSV в Go?

Как эффективно читать и записывать файлы CSV в Go?

Опубликовано 8 ноября 2024 г.
Просматривать:704

How to Efficiently Read and Write CSV Files in Go?

Эффективное чтение и запись файлов 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