C++ 如何找出我的DLL增长如此之快的原因

C++ 如何找出我的DLL增长如此之快的原因,c++,optimization,profiler,C++,Optimization,Profiler,我一直在开发的一个DLL最近已经大了很多。有没有什么工具可以告诉我是什么原因造成的?例如,是一个被实例化太多次的模板,还是一个第三方库,或者是boost 我正在寻找一种关注大小而不是性能的探查器。如果您的DLL具有其他依赖项,并且您正在使用静态链接将DLL链接到它们,则您的DLL可能会变大: 静态链接可以使二进制文件更容易分发到不同的用户环境中(代价是发送一个更大、更需要资源的程序) 编辑: 我发现这个帖子中的答案对于你的问题来说非常有趣: 但是一个有趣的实验是验证对于每个模板实例化,结果

我一直在开发的一个DLL最近已经大了很多。有没有什么工具可以告诉我是什么原因造成的?例如,是一个被实例化太多次的模板,还是一个第三方库,或者是boost


我正在寻找一种关注大小而不是性能的探查器。

如果您的DLL具有其他依赖项,并且您正在使用静态链接将DLL链接到它们,则您的DLL可能会变大:

  • 静态链接可以使二进制文件更容易分发到不同的用户环境中(代价是发送一个更大、更需要资源的程序)
编辑:

我发现这个帖子中的答案对于你的问题来说非常有趣:

但是一个有趣的实验是验证对于每个模板实例化,结果的可执行文件大小是否线性增长。如果是这样,您就知道您的问题是模板实例化。有一篇文章讨论了这类问题,并介绍了一种重构技术

编辑:


您的问题很有可能是使用boost头的结果。检查此线程以了解原因:

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


好吧,你就是建造它的人!为什么你需要一个分析器来查看你自己必须添加的内容?@Neil Butterworth:我想看看是否有一个特别重的类、模板或函数被内联得太厉害了--我不知道如何通过检查来找出这些内容。你给它加了什么?他们没告诉你午夜后在店里不要吃比萨饼吗?很简单。在版本控制中返回到您对大小满意的时间。不幸的是,分发到“不同的用户环境”正是我必须做的。切换到动态链接是我的第一个想法,但由于一些原因,这一想法立即被排除了。@karlphilip我使用的是boost的标题部分。@Pedro一个有趣的实验将是验证每个模板实例化,由此产生的可执行文件大小呈线性增长。代码项目中有一个不错的页面称为重构模板膨胀,如果您发现问题真的是模板实例化的话,您可能会感兴趣:+++是的。我要么这样做,要么得到一个地图文件,看看里面有什么。很可能不是,因为我声明了一个变量,所以它充满了大量的类库,实际上我根本不需要这个变量。