с шаблонами или без
От: Hard_Club  
Дата: 13.07.10 14:46
Оценка:
какой код будет дольше исполняться?

template<typename A> inline int get_a()
{
return 0;
}

template<> inline int get_a<int>()
{
return 5;
}

main()
{
return get_a<int>();
}

или

main()
{
5;
}

Это я о том, что всегда ли компилятор разворачивает код шаблонов и встраивает его как inline?
Re: с шаблонами или без
От: uzhas Ниоткуда  
Дата: 13.07.10 15:31
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Это я о том, что всегда ли компилятор разворачивает код шаблонов и встраивает его как inline?

не всегда
и это не только к шаблонам относится, но и к ключевому слову inline
inline — это рекомендация компилятору встроить код (а еще это возможность определять функции прямо в хедере, чтобы не было проблем с линковкой)
Re[2]: с шаблонами или без
От: Hard_Club  
Дата: 13.07.10 16:50
Оценка:
Здравствуйте, uzhas, Вы писали:

U>Здравствуйте, Hard_Club, Вы писали:


H_C>>Это я о том, что всегда ли компилятор разворачивает код шаблонов и встраивает его как inline?

U>не всегда
U>и это не только к шаблонам относится, но и к ключевому слову inline
U>inline — это рекомендация компилятору встроить код (а еще это возможность определять функции прямо в хедере, чтобы не было проблем с линковкой)

так что, там где код критический, там лучше таким не злоупотреблять?
Re[3]: с шаблонами или без
От: wander  
Дата: 13.07.10 18:16
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>Здравствуйте, uzhas, Вы писали:


U>>Здравствуйте, Hard_Club, Вы писали:


H_C>>>Это я о том, что всегда ли компилятор разворачивает код шаблонов и встраивает его как inline?

U>>не всегда
U>>и это не только к шаблонам относится, но и к ключевому слову inline
U>>inline — это рекомендация компилятору встроить код (а еще это возможность определять функции прямо в хедере, чтобы не было проблем с линковкой)

H_C>так что, там где код критический, там лучше таким не злоупотреблять?


Наоборот, если с умом, то производительность можно поднять Читать здесь
Re[3]: с шаблонами или без
От: uzhas Ниоткуда  
Дата: 14.07.10 06:45
Оценка:
Здравствуйте, Hard_Club, Вы писали:

H_C>так что, там где код критический, там лучше таким не злоупотреблять?

да, злоупотреблять вообще ничем не стОит
компиляторы нынче гораздо умнее нас, они соптимизируют как надо (даже ключики компиляции соответствующие придумали), поэтому не следует использовать слово inline
есть случаи, когда явная подсказка компилятору может что-то соптимизировать — вы попробуйте: сначала с inline, затем — без
и посчитайте выигрыш