GOLANG_BOOKS Telegram 1007
📁 Go: быстрая обработка гигантских файлов

Подход к обработке огромных файлов (миллионы строк) в Go: быстро, параллельно и без лишнего потребления памяти.

🔧 Идея: pipeline с каналами и воркерами

1. Читаем файл по строкам через bufio.Scanner
2. Передаём строки в батчах (например, по 100 000) в канал
3. Несколько горутин-воркеров обрабатывают эти батчи
4. Объединяем результаты и записываем/анализируем дальше

💡 Результаты:
• Последовательная обработка занимала ~19 секунд
• Параллельная (10 воркеров + batch size 100 000) — ~9 секунд
• Потребление памяти остаётся стабильным, даже на файлах 20+ ГБ

🛠 Почему это эффективно:
• Каналы позволяют читать и обрабатывать одновременно
• Батчи уменьшают количество аллокаций
• Возможна повторная инициализация []string через sync.Pool
• GC остаётся под контролем — без резких пиков

Подходит для:
• CSV, JSONL, логов, текстовых потоков
• ETL-пайплайнов: чтение → обработка → сохранение
• Стриминговой обработки в аналитике и ML

📌 Советы:
• Используй runtime.NumCPU() для адаптивного количества воркеров
• Подбирай batchSize экспериментально (10–100 тыс строк)


Читать



tgoop.com/golang_books/1007
Create:
Last Update:

📁 Go: быстрая обработка гигантских файлов

Подход к обработке огромных файлов (миллионы строк) в Go: быстро, параллельно и без лишнего потребления памяти.

🔧 Идея: pipeline с каналами и воркерами

1. Читаем файл по строкам через bufio.Scanner
2. Передаём строки в батчах (например, по 100 000) в канал
3. Несколько горутин-воркеров обрабатывают эти батчи
4. Объединяем результаты и записываем/анализируем дальше

💡 Результаты:
• Последовательная обработка занимала ~19 секунд
• Параллельная (10 воркеров + batch size 100 000) — ~9 секунд
• Потребление памяти остаётся стабильным, даже на файлах 20+ ГБ

🛠 Почему это эффективно:
• Каналы позволяют читать и обрабатывать одновременно
• Батчи уменьшают количество аллокаций
• Возможна повторная инициализация []string через sync.Pool
• GC остаётся под контролем — без резких пиков

Подходит для:
• CSV, JSONL, логов, текстовых потоков
• ETL-пайплайнов: чтение → обработка → сохранение
• Стриминговой обработки в аналитике и ML

📌 Советы:
• Используй runtime.NumCPU() для адаптивного количества воркеров
• Подбирай batchSize экспериментально (10–100 тыс строк)


Читать

BY Golang Books




Share with your friend now:
tgoop.com/golang_books/1007

View MORE
Open in Telegram


Telegram News

Date: |

Telegram iOS app: In the “Chats” tab, click the new message icon in the right upper corner. Select “New Channel.” As the broader market downturn continues, yelling online has become the crypto trader’s latest coping mechanism after the rise of Goblintown Ethereum NFTs at the end of May and beginning of June, where holders made incoherent groaning sounds and role-played as urine-loving goblin creatures in late-night Twitter Spaces. Telegram channels fall into two types: To view your bio, click the Menu icon and select “View channel info.” Although some crypto traders have moved toward screaming as a coping mechanism, several mental health experts call this therapy a pseudoscience. The crypto community finds its way to engage in one or the other way and share its feelings with other fellow members.
from us


Telegram Golang Books
FROM American