| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > __builtin_expect(expr, code) - для чего она? |
| Автор: boostcoder 10.2.2012, 17:36 | ||
| привет. почитывал про http://www.imodulo.com/gnu/gcc/Other-Builtins.html в поисках возможности реализации/использования шаблонов для Си (__builtin_types_compatible_p() - но топик не об этом), и наткнулся на такую встроенную функцию как __builtin_expect(). (по этой же ссылке, но чуток ниже) почитал описание, и нифига не понял
о чем говорится в описании - понял. но не понял, ее смысл только для профилирования? или я таки действительно не понял? спасибо. |
| Автор: bsa 11.2.2012, 10:05 |
| boostcoder, это нужно не для профилирования, а для оптимизации. У современных процессоров есть такая фишка, называется "предсказатель условных переходов". Если он неверно предсказал, то происходит остановка исполняющих блоков, откат результатов параллельных вычислений и вычисление заново (ты помнишь, наверное, что ядра современных процессоров выполняют более одной инструкции за такт). Эта функция подсказывает компилятору, что скорее всего результатом будет такое-то значение. Благодаря этому компилятор сделает такой код, что предсказатель будет реже ошибаться. |