这是我的一个重要疑问。 模板函数是否比文字函数慢(即使用完整类型声明)?
答案 0 :(得分:3)
根据我的测试(例如,在previous answer中),模板函数可以与非模板函数的速度相同,但通常不会。最大的区别是模板函数通常会通过引用接收它的参数,以防万一它们是“大”的。非模板函数更有可能通过值接收其参数,如果参数相当小,则通常会提高速度。但是,如果两者通过引用接收他们的参数,我发现至少在某些情况下,模板实际上会比非模板代码快一点。
但是,请注意,仿函数经常会击败两者(例如,恰好发生在上面引用的测试中)。
答案 1 :(得分:2)
在genral中没有区别,因为编译器将实例化的模板扩展为相同的代码,就好像你自己在没有模板的情况下编写它一样。
换句话说,模板在编译时处理而不是运行时。
答案 2 :(得分:2)
不,它们在编译时被编译成常规函数。
在运行时,它们的工作方式与任何其他功能完全相同。
答案 3 :(得分:2)
我认为正确的答案如下:模板函数具有相同的运行时性能,但在某些情况下可能需要更长的时间进行编译。
答案 4 :(得分:1)
每个模板都会收到一个类型,因此编译后会成为“文字函数”。所以我猜他们并不慢..
答案 5 :(得分:1)
没有。实例化模板时,编译器使用模板参数生成函数,生成的函数就像使用这些类型编写非模板函数一样。