Re[4]: Пример использования шаблонов для оптимизации
От: watchmaker  
Дата: 27.11.14 14:00
Оценка: 1 (1)
Здравствуйте, jazzer, Вы писали:

CG>>Если сделать X простым параметром и передать в функцию константу то компилятор сделает то же самое (constant folding/propagation).


J>Ну да, но только если заинлайнится.

J>А в случае шаблона это произойдет в любом случае.
Даже это не всегда бывает. Функция может быть встроена, а константы у компилятора не схлопнутся.
Вот небольшой пример по вычислению обратного числа в полукольце вычетов. Все три компилятора (gcc, clang, icc) разных версий (там в интерфейсе можно выбирать) успешно встраивают функцию, но вычислить её ни у одного не получается. А вот в варианте с шаблонами у всех всё схлопывается до константы.
Отредактировано 27.11.2014 15:35 watchmaker . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.