如何找出我的DLL增长如此之多的原因

时间:2011-05-17 18:06:27

标签: c++ optimization profiler

我一直在努力的DLL最近增长了很多。是否有任何工具可以告诉我对此负责的是什么?例如,它是一个被实例化太多次的模板,或者可能是第三方库,还是可以提升?

我正在寻找一种能够看到尺寸而不是性能的分析器。

2 个答案:

答案 0 :(得分:7)

您是在谈论DLL的大小(以字节为单位)吗?尝试使用dumpbin实用程序。这可以向您显示DLL中的内容。 / ARCHIVEMEMBERS应该显示各个对象模块。

http://support.microsoft.com/kb/177429

答案 1 :(得分:3)

如果您的DLL具有其他依赖项并且您使用STATIC链接将DLL链接到它们,则可以预期您的DLL会变大:

Static linking vs dynamic linking

  
      
  • 静态链接可以使二进制文件更容易分发到不同的用户环境(代价是发送大量且资源更耗尽的程序)。
  •   

修改

我发现这个帖子的答案对你的问题很有意思:Profiling DLL/LIB Bloat

但一个有趣的实验是验证每个模板实例化是否会导致生成的可执行文件大小呈线性增长。如果是,您知道您的问题是模板实例化。有一个decent article here讨论了这类问题并提出了一种重构它的技术。

修改

您的问题很可能是使用boost标头的结果。检查此主题以找出原因:Why does using boost increase file size so much?