Привет, друзья! Сегодня мы поговорим про оптимизацию кода. Причем стараться делать сво...
Привет, друзья! Сегодня мы поговорим про оптимизацию кода. Причем стараться делать свой код лучше можно с самых азов. 👇 Одна из техник, которая делает код чище и читабельнее — ранний возврат. Представим код, который уходит в глубину вложенных if, настоящий лабиринт (1я картинка). Теперь посмотрим на 2ю картинку. Код сразу проверяет граничные условия и делает ранний возврат (return), если условия не выполнены. В итоге: код, который проще читать и сопровождать. ✍ А что нам предлагает стандарт С++20 для оптимизации такого случая: атрибуты [[likely]] и [[unlikely]]. 🛠 Обычно ошибки и проверки аргументов срабатывают редко. Это идеальное место для [[unlikely]]. (3я картинка). 🧠 Современные процессоры пытаются предсказать, какую ветку кода программа выполнит следующей. Если процессор угадал - всё летает. Если ошибся - теряем такты. С помощью атрибутов мы даем компилятору «инсайд»: какая ветка будет выполняться чаще. ⚠ Важный нюанс: если поставить атрибуты наугад, можно сделать только хуже.