Здравствуйте, lpd, Вы писали:
_>>Во-вторых естественно вопрос производительности. Статический полиморфизм очевидно на порядки эффективнее, т.к. вызов не просто идёт напрямую (а не косвенно, как в случае виртуальной функции), но и практически гарантированно инлайнится. lpd>Ну это уже совсем экономия на спичках. В отдельных критических участках кода может такой выигрыш в скорости и имел бы смысл, но и в таких случаях обычно нужны simd-инструкции, а не шаблоны. А оптимизация каждой функции только вредит проекту усложнением кода. Использовать везде шаблоны это все равно как раньше писали все полностью на ассемблере ради некой скорости.
Это очевидно неверно, шаблоны действуют строго противоположно аналогии с ассемблером. Они наоборот: перекладывают максимум работы по оптимизации из рантайма на компилятор. И SIMD-инструкции при этом никто не отменял: функции специализируются и их внутренность реализуется на интрисиках. Собственно Intel MKL внутри так и выглядел, когда я его видел несколько лет назад.