GitHub ускорил case‑folding кода до 45 GiB/s на одном ядре
GitHub применил безветвичный цикл и арифметику байтового пространства, чтобы обрабатывать каждый байт поиска кода со скоростью более 45 GiB/s на одном ядре, приближая обработку к скорости памяти.
Что произошло?
В блоге GitHub Engineering опубликован материал Don’t stop early: Case‑folding source code at memory speed (31 июля 2026). Авторы рассказали, как команда оптимизировала процесс case‑folding — приведения символов к единому регистру, необходимый для поиска кода.
Ключевые идеи
- Безветвичный цикл: заменил традиционный
if‑проверочный код на ветвление‑независимую арифметику, что устранило штрафы процессора от предсказания ветвей. - Арифметика байтового пространства: использована техника, позволяющая преобразовывать 8‑битные символы в регистр без условных операторов, используя лишь простые битовые операции.
- Параллелизм на уровне кэша: оптимизация работает в пределах кэша L1/L2, минимизируя обращения к оперативной памяти.
Результаты
- Скорость обработки: более 45 GiB/s на одном ядре процессора, что почти вдвое превышает предыдущие показатели.
- Эффективность: снижение нагрузки на серверы поиска кода, экономия энергии и возможность обслуживать больше запросов без масштабирования инфраструктуры.
- Применимость: подход может быть адаптирован к другим задачам, где требуется массовая нормализация текста (например, индексация документов, подготовка данных для LLM).
Подробный разбор доступен в оригинальном посте: https://github.blog/engineering/architecture-optimization/dont-stop-early-case-folding-source-code-at-memory-speed/
Для AI‑разработчиков это открывает путь к более быстрым пайплайнам предобработки кода и текстов, что особенно ценно при построении больших индексов для LLM‑поиска. Техника безветвичных циклов может быть перенесена в собственные инструменты, ускоряя токенизацию и нормализацию данных без дополнительного железа.


