模板比文字函数慢?

时间:2011-11-15 07:57:46

标签: c++ templates

这是我的一个重要疑问。 模板函数是否比文字函数慢(即使用完整类型声明)?

6 个答案:

答案 0 :(得分:3)

根据我的测试(例如,在previous answer中),模板函数可以与非模板函数的速度相同,但通常不会。最大的区别是模板函数通常会通过引用接收它的参数,以防万一它们是“大”的。非模板函数更有可能通过值接收其参数,如果参数相当小,则通常会提高速度。但是,如果两者通过引用接收他们的参数,我发现至少在某些情况下,模板实际上会比非模板代码快一点。

但是,请注意,仿函数经常会击败两者(例如,恰好发生在上面引用的测试中)。

答案 1 :(得分:2)

在genral中没有区别,因为编译器将实例化的模板扩展为相同的代码,就好像你自己在没有模板的情况下编写它一样。

换句话说,模板在编译时处理而不是运行时。

答案 2 :(得分:2)

不,它们在编译时被编译成常规函数。

在运行时,它们的工作方式与任何其他功能完全相同。

答案 3 :(得分:2)

我认为正确的答案如下:模板函数具有相同的运行时性能,但在某些情况下可能需要更长的时间进行编译。

答案 4 :(得分:1)

每个模板都会收到一个类型,因此编译后会成为“文字函数”。所以我猜他们并不慢..

答案 5 :(得分:1)

没有。实例化模板时,编译器使用模板参数生成函数,生成的函数就像使用这些类型编写非模板函数一样。