Re[4]: Пример использования шаблонов для оптимизации
От: chaotic-good  
Дата: 24.02.15 07:41
Оценка:
EP>Код со статическим/параметрическим полиморфизмом зачастую получается не только быстрее, но и проще. Несколько раз упомянутый тобой CRTP используется только в некоторых специфических случаях, в то время как для статического полиморфизма зачастую достаточно обыкновенной перегрузки, которая очевидно проще чем виртуальные вызовы и прочие индерекции, плюс value-semantic автоматически сохраняется (её можно получить и для динамического полиморфизма, но для этого требуется много движений).
EP>Например попробуй переписать partition_point через динамический полиморфизм, и мы сравним:
EP>
EP>template<typename I, typename P>
EP>I partition_point(I first, I last, P p)
EP>{
EP>    while(first != last)
EP>    {
EP>        I middle = next(first, distance(first, last)/2);
EP>        if( p(*middle) )
EP>            last = middle;
EP>        else
EP>            first = next(middle);
EP>    }
EP>    return first;
EP>}
EP>


Я не утверждал что кругом нужно лепить динамический полиморфизм. Как раз наоборот, там где шаблоны позволяют упростить код, следует именно их и использовать.

EP>Ошибка какого рода? Не добавляет скорости или "производительность в базу упирается"?


Ложное целеполагание. Некоторые считают что с помощью шаблонов можно получить более быстрый код, но по факту, никто ведь не сравнивает обычно и очень часто компилятор может оптимизировать код без шаблонов не хуже.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.