0

我的代码中有很多模板。

如何确定哪些模板导致代码膨胀(即通过多次实例化)?

4

1 回答 1

3

对问题及其评论的快速说明:模板实例化的数量并不重要,只有具有不同类型组合的实例化数量才重要。这与模板专业化非常不同。

手动跟踪实例化有一种简单而肮脏的方法。对于您要检查的模板,只需添加一个生成警告的行。在这里很难给出这样的声明,因为它完全取决于您的编译器类型和项目中的编译器选项。一个好的猜测是添加一个具有唯一名称和可疑值的静态变量。现在您所要做的就是过滤编译器日志中的这些自定义警告。由于所有不同的类型组合只编译一次,因此每个组合应该只有一个警告。如果不是这样,从日志中过滤重复项仍然很容易。

不幸的是,用这样的自定义语句标记所有模板是侵入性的,并且可能非常耗时。如果您需要更复杂的东西,可以尝试使用模板元程序调试器。在这里(Boost 邮件列表),您可以找到一个简短的摘要和一个免费调试器下载页面的链接。

http://boost.2283326.n4.nabble.com/Re-vsix-template-profiler-extension-Templight-td3888368.html

如果您对它的工作原理感到好奇,可以在http://gsd.web.elte.hu/contents/articles/gpce06.pdf中阅读更多相关信息。

于 2012-05-19T06:36:15.743 回答