Полный текст
Отсекая лишнее: как сократить бинарный код программы на C++ и не потерять нужную функциональностьИнженеры YADRO столкнулись с классикой: новые фичи для BMC серверов просто не влезают в накопители старых платформ. Расширить железо у заказчиков уже нельзя. Единственный выход — заставить бинарник C++ «похудеть», причём не потеряв ни одной функции. Это не про выжимание RPS, это про выживание прошивки.Сначала в ход пошли флаги компилятора (привет, -flto), но настоящие монстры нашлись в коде. Анализ в Bloaty показал, что std::visit отъедал 15% всего бинаря! Пришлось искать альтернативы, менять std::shared_ptr на std::unique_ptr и вручную «дешаблонизировать» методы. Погрузимся в процесс этой жёсткой оптимизации.