← Все новости
Сортировка слиянием, часть 2

Сортировка слиянием, часть 2

Это продолжение статьи «Сортировка слиянием — не так просто, как кажется». Там я довёл тестовое задание — отсортировать 100 ГБ строк вида число. текст за час — до 32 минут: пайплайн из пяти стадий на Channels, Brotli, sort keys во временных файлах. Сортировка, конечно же, с учетом культуры.Прошлое решение мне не нравилось: много низкоуровневой возни, бенчмарки показывали, что отдельные части можно сделать лучше, но увязать их вместе было нетривиально. Самое главное, что на случайных строках решение никак не укладывалось в один час.Год назад, когда появилось время, я начал переделывать решение. Даже сделал черновик поста, но переработка затянулась, а пост по таймеру опубликовался сам, когда я забыл переставить дату.Итог: 100 ГБ случайных строк (худший случай для сжатия) на обычном HDD — за 52 минуты.Рассказываю, как код к этому пришёл: тут и предложение из комментариев, которое сработало слишком хорошо, и CSR-раскладка, которую подсказал ИИ, и малоизвестные части .NET. Читать далее