Справится ли один поток с миллиардом строк?
nubskr
0:00 / 0:00
Справится ли один поток с миллиардом строк?
18 491 просмотр · 2 недели назад
nubskr
2,62 тыс. подписчиков
18 491 просмотр · 2 недели назад
Смотрите больше видео о создании программ с нуля: • Building from Scratch
В этом видео я решаю задачу «Billion Row Challenge» (1BRC), используя Zig и однопоточный режим.
«Billion Row Challenge» — это задача по оптимизации производительности программирования, в которой программа обрабатывает текстовый файл, содержащий миллиард измерений температуры. Каждая строка содержит название метеостанции и температуру, и цель состоит в том, чтобы вычислить минимальную, среднюю и максимальную температуру для каждой станции.
Входной файл, используемый в этом видео, составляет около 14 ГБ, и задача допускает до 10 000 различных названий метеостанций.
Я начинаю с простой однопоточной реализации, а затем оптимизирую её шаг за шагом. Я использую профилирование, чтобы определить, где программа фактически тратит время, анализирую стоимость операций с плавающей запятой и операций с хеш-таблицей, заменяю анализ температуры целочисленной арифметикой, использую mmap для доступа к файлу и измеряю, как каждое изменение влияет на производительность.
Видео посвящено системному программированию, оптимизации производительности, профилированию, файловому вводу-выводу, хеш-таблицам, разбору целых чисел, mmap, Linux perf, Zig и эффективной обработке очень больших текстовых файлов.
00:00:00 Что такое «Задача миллиарда строк»?
00:00:50 Создание наивной версии
00:08:20 Отслеживание статистики
00:22:16 Давайте проведём бенчмаркинг
00:25:18 Это вообще правильно?
00:40:07 Профилирование узких мест
00:45:08 Числа с плавающей запятой — зло
01:00:30 Бенчмаркинг целочисленной версии
01:02:42 Может ли mmap нас спасти?
01:10:59 Насколько далеко может зайти один поток?
#zig #systemsprogramming