如果我有一个C++模板我有两个选择(不出口关键字)将它们连接:C++模板性能纳入模型和在线模型
与内联包含模式 - 即包括定义一起在.h文件中声明。这种内联的所有功能,并且没有内联创建一个大的单元(虽然它的懒惰)
纳入模型 - 即像包括这个.h文件中:
代码:
// templateinstantiations.cpp
#include "array.cpp"
template class array <int, 50>; // explicit instantiation
每次我想使用一个模板,并小心明确地实例化每一个我需要的类型(这可能很无聊,很难维护)
我的曲线注意的是:我知道过度内联函数可能会导致内存抖动和性能损失。此外,在上述两种情况下,编译时间似乎都很大......第一种和第二种方法之间的权衡是什么?是否有一个标准选择第一个或第二个我只需要尝试一下,并“时间”他们?
Ehm ...只是做正常的方式,并担心提高编译时间,当他们真的从中受到影响?只是你知道,你的模板可能不会导致任何放缓。大部分stdlib都是模板,它们都只是在头文件中包含定义。 – Xeo
回复:“(这可能很无聊,很难维护)” - 的确如此。除非你能够衡量**重大**的好处,否则不要这样做。在几乎所有情况下,都不要这样做。 –
我更担心潜在的“内存抖动”现象,而不是“庞大的编译时间”,我有点“担心”内联方法 –