TGTGInsightаналитика telegramLIVE / telegram public index
← ФСП | Запорожская область
ФСП | Запорожская область avatar

TGINSIGHT POST

Post #281

@fsp_zo

ФСП | Запорожская область

Просмотры135Количество просмотров
Опубликован28 нояб.28.11.2025, 10:53
Содержимое поста

Содержимое

Подсказки компилятору — атрибуты [[likely]] и [[unlikely]] в C++20 В современном C++ важно не только *что* делает код, но и *как часто* выполняются разные ветки. Атрибуты [[likely]] и [[unlikely]] помогают подсказать компилятору, какие условия встречаются чаще — это может улучшить branch prediction и чуть ускорить критичные участки. С C++20 можно писать так: int classify(int x) { if (x >= 0) [[likely]] { return 1; // «обычный» путь } else [[unlikely]] { return -1; // редкий случай } } int main() { std::cout << classify(10) << "\n"; // чаще std::cout << classify(-5) << "\n"; // реже } Здесь мы явно говорим компилятору: позитивные значения — норма, отрицательные — редкость. Внутри if это выглядит аккуратно, без лишних макросов и #ifdef. Атрибуты также работают в switch: const char* to_string_error(int code) { switch (code) { case 0: [[likely]]; return "OK"; case 1: return "Network error"; default: [[unlikely]]; return "Unknown error"; } } Здесь case 0 — самый вероятный путь, а default помечен как маловероятный, но важный для диагностики. ➡️ Такие подсказки не гарантируют ускорения, но помогают компилятору лучше оптимизировать горячие участки и делают намерения разработчика явными прямо в коде. @fsprussia #ФСП#СпортивноеПрограммирование