std::to_string faster than light

RU / День 1 / 15:30 / Зал 3

Доклад — рассказ про историю одного PR в libc++ LLVM.

Одна скромная попытка ускорить std::to_string для целых в стандартной библиотеке выросла в целое исследование с разбором требований и реализаций различных способов форматирования чисел в С++.

Разберём начальную реализацию std::to_string, какими способами можно её улучшить.

Рассмотрим три последовательных итерации по ускорению std::to_string: оптимизация аллокаций, переход от sprintf к наивному алгоритму делениями и std::to_chars.

Запрофилируем каждый из вариантов, объясним результаты и посмотрим, какие трюки используются для быстрого форматирования чисел.